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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ziqingjie 中级黑马   /  2015-4-16 08:48  /  646 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a=12;
                int b=(++a)+(a--)+(a++);
                System.out.println(a);
                System.out.println(b);
            
                int a=12;
                int b=(a++)+(a--)+(a++);
                System.out.println(a);
                System.out.println(b);

为什么前后两个b的值不一样?求知道的大神讲解下

4 个回复

正序浏览
也就是说第一的++a,是自增1后((++a)+1)=13,在回到int b=(++a)+(a--)+(a++)l里做运算,所以int b=13+13+12,第二a++,是先在int b=(a++)+(a--)+(a++)里做运算,运算完后的值赋给了b,自后在回来自增1,也就是int b=12+12+12。
回复 使用道具 举报
答案是: 13
             38
             13
             37吧,
关键是要理解这个 ++a 和 a++ 的运算顺序, ++a 是把 a加1后,再使用a的值,而a++,则是先使用a的值,再把a加一
回复 使用道具 举报
++a在前,是a先自增1后再参与运算,a++在后,是a先参与运算之后再自增1.
回复 使用道具 举报
++a是自加1后运算,a++是运算结束后自加给自己赋值,第一个:b=13+13+12,第二个:b=12+12+12
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马