win-tc中自增运算符的疑问
int a=1,b=1,e=1,f=1;
int c=(a++)+(a++)+(a++);
int d=(++b)+(++b)+(++b);
printf("%d %d %d %d %d %d\n",a,b,c,d,(e++)+(e++)+(e++),(++f)+(++f)+(++f));
输出结果是
4 4 3 12 6 9
请问为什么
c与(e++)+(e++)+(e++)不相等
d与(++f)+(++f)+(++f)不相等
[解决办法]
取决于编译器实现,属于未定义行为。
[解决办法]
不要在同一语句中,对同一个变量使用两次或以上次的++/--,因为这是标准未定义的行为,不同的编译器有不同的结果。