i=3 printf("%d %d %d %d\n", i++, ++i, i++, ++i); 求结果解释

2015-07-12 11:37:03 +08:00
 nobodybutme
int i=3, j = 3, z = 3;
printf("%d %d %d %d\n", i++, ++i, i++, ++i);
printf("%d %d %d %d\n", j++, ++j, ++j, ++j);
printf("%d %d %d\n", ++z, ++z, ++z);

结果为:
6 7 4 7
6 7 7 7
6 6 6

printf 参数从右往左压栈, 我一直以为z的输出应该是6 5 4,有人帮忙解释下么?
8157 次点击
所在节点    问与答
21 条回复
adadada
2015-07-12 17:02:51 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/205098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX