int i=3;
int a=0;
a=(++i)+(++i)+(++i);
printf("%d",a);
输出a的结果为什么是16 而不是15
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
编译器貌似是取了两个操作数就开始计算, 这个有点意思