int main(){ int i=1,b; b=(i++)+(i++); //关键点 printf("this is i %d\n",i); printf("this is b %d\n",b); return 0; } 结果 this is i 3 this is b 3 i 等于 3,并不难想代码中有 2 次++操作。
b 等于 3,可能要难想一点。
b=(i++)+(i++)先计算表达式在自增
(i++)+(i++)=1+2=3
第一个括号先取值得到 1,在自增。 第二个括号先取值得到 2,在自增。
上面是后缀符号,前缀符号,我还没搞明白。
把b=(i++)+(i++);改成b=(++i)+(++i);
结果为
this is i 3 this is b 6 我想来想去也不应该等于 6 啊! 正常逻辑应该是等于 5 啊!先自增在计算表达式!
后来我又改成了 b=(++i)+1+(++i);`
结果还是等于 6.
改成了 b=(++i)+2+(++i);` 结果等于 7;这才说的通啊。。。


