Printf输出的顺序相反

时间:2012-11-28 01:42:14

标签: c printf

  

可能重复:
  Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)

我在GCC中尝试了这个简单的C程序

#include<stdio.h>
int main(){
int x=5;
printf("%d,%d,%d,%d,%d",++x,x++,x,x++,++x);
return 0;
}

,输出为9,7,7,6,6 我追踪它并假设它将打印6,6,7,7,9但我发现我的假设是相反的顺序,为什么会这样!

1 个答案:

答案 0 :(得分:4)

因为您的程序有未定义的行为。在函数参数的评估之间没有序列点,并且在不干预序列点的情况下多次改变同一对象是未定义的行为。

该计划简单不明确。它不是一个有效的C程序。