可能重复: 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,但我发现我的假设是相反的,怎么会!
发布于 2012-11-28 01:44:03
因为您的程序有未定义的行为。函数参数的求值之间不存在序列点,并且在不干预序列点的情况下多次对同一个对象进行突变是一种未定义的行为。
这个节目简直是不正确的.它不是一个有效的C程序。
https://stackoverflow.com/questions/13596418
复制相似问题