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;这才说的通啊。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.