C中的打印顺序

时间:2014-04-14 20:02:05

标签: c printf undefined-behavior sequence-points

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使用反向印刷顺序。

1 个答案:

答案 0 :(得分:2)

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

具体来说,违反的规则是,除了确定要写入的值之外,不得在没有序列点的情况下读取和写入相同的变量。