可能重复:
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但我发现我的假设是相反的顺序,为什么会这样!
答案 0 :(得分:4)
因为您的程序有未定义的行为。在函数参数的评估之间没有序列点,并且在不干预序列点的情况下多次改变同一对象是未定义的行为。
该计划简单不明确。它不是一个有效的C程序。