-4
int x=10;
printf("%d %d %d\n",x,++x,x++);
printf("%d %d %d",x,x+20,x+30);

它打印输出为

12 12 10
12 32 42

为什么第一个 printf 中的顺序是相反的,为什么不是第二个 printf 语句? 我在一本书中发现C使用反向打印顺序。

4

1 回答 1

2

您的代码具有未定义的行为(“UB”)。因此,任何事情都可能发生。

具体来说,违反的规则是,除非确定要写入的值,否则不得在没有序列点的情况下读写同一个变量。

于 2014-04-14T20:03:21.910 回答