酱油王 发表于 2021-7-21 18:48:12

printf的输出顺序和n++,++n的顺序逻辑问题

我实在是不明白这其中的规律。请大佬们帮我瞧一哈!
int a=10;
printf("%d %d %d %d\n",a++,a,++a,a++);

打印结果是:12 13 13 10

int a=10;
printf("%d %d %d",++a,a,a++);

打印结果是12 12 10

完全找不到规律{:5_107:}

xiaosi4081 发表于 2021-7-21 18:50:30

++a 就是先给a加1,然后传给printf,匹配上%d
a++ 就是先传给printf,然后给a加1,匹配上%d

酱油王 发表于 2021-7-21 19:00:38

xiaosi4081 发表于 2021-7-21 18:50
++a 就是先给a加1,然后传给printf,匹配上%d
a++ 就是先传给printf,然后给a加1,匹配上%d

以第一个例子讨论,假设从左往右的4个a分别是1,2,3,4号,++运算符优先级高于逗号运算符,如果printf函数是从右往左输出的顺序,那按理来说,4号a是10, 3号a不应该是12吗,1号a应该是12, 2号a最后输出是13。

xiaosi4081 发表于 2021-7-21 19:12:06

酱油王 发表于 2021-7-21 19:00
以第一个例子讨论,假设从左往右的4个a分别是1,2,3,4号,++运算符优先级高于逗号运算符,如果printf函数 ...

突然发现:
https://blog.csdn.net/musiccow/article/details/5944251

万千只cnm 发表于 2021-7-21 19:53:21

每个编译器都不一样呀 没什么意义这样写
主要是要理解前后缀的区别。
我的结果是10 11 12 12 是从左到右顺序

页: [1]
查看完整版本: printf的输出顺序和n++,++n的顺序逻辑问题