int i=3;
int a=0;
a=(++i)+(++i)+(++i);
printf("%d",a);
输出a的结果为什么是16 而不是15
跟踪了一下这个
a=(++i)+(++i)+(++i); 改写成 a = a1 + a2 + a3
过程应该是这样:
先计算 a= a1 + a2, 这个时候是计算两次 ++是5, 也就是 a1=a2=5,算的10
在计算 a= 10 + a3, 这个时候是计算1次 ++是6, 原来是5, 所以是 a = 10 + 6 =16
编译器貌似是取了两个操作数就开始计算, 这个有点意思
未定义行为,讨论这种表达式的结果无意义。
不知道你这个问题是否已经解决, 如果还没有解决的话: