A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 京鱼龙 中级黑马   /  2012-7-5 23:10  /  2759 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗京雨 于 2012-7-6 08:32 编辑

那位大侠给说下,我知道a++是先赋值在运算,++a是先运算后赋值。
有一道题是   int a = 3,b;
            b = (a++)+(++a)*2+(a++)+(++a);
我算出来的结果b = 18,但答案却是b = 25。
是不是第一个(a++)和第三个(a++)的值不一样,第二个和第四个(++a)的值不一样。
但是哪里不一样我就不知道了,是两个a的值不一样还是前面的(a++)和后面的(a++)整体的出来的值不一样。

请大侠帮我解答下,a++和++a快把我累死了。

5 个回复

倒序浏览
是这么算出来的,第一个a++,这时a=,3,到++a时,这时,a经过前一次运算后变成4,++a后变成5,后面的原理跟前面一样,即b=3+5x2+5+7=25,希望能帮到你。
回复 使用道具 举报
a++先用后自加,++a先自加再用。如果只有a++和++a,没有别的运算时,这两个效果一样。
你这里,先a++,这时a=3,到第二步++a时a=5,因为a经过前一步自加后a=4,第三步再a++,这时a=5,第四步++a时,a=7。
所以是 3+5*2+5+7=25。希望有所帮助。
回复 使用道具 举报
按照从左到右的顺序计算就ok了,a++,就是先赋值a,然后a在做++动作,++a嗯,就是先++动作,在赋值a。{:soso_e102:}大白话……
回复 使用道具 举报
如果++在前边就是先+1在操作,反之在++在后边就是先操作在+1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马