黑马程序员技术交流社区

标题: 关于运算符的问题? [打印本页]

作者: ziqingjie    时间: 2015-4-16 08:48
标题: 关于运算符的问题?
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的值不一样?求知道的大神讲解下
作者: Anfinsenh    时间: 2015-4-16 08:58
++a是自加1后运算,a++是运算结束后自加给自己赋值,第一个:b=13+13+12,第二个:b=12+12+12
作者: 396460221    时间: 2015-4-16 09:00
++a在前,是a先自增1后再参与运算,a++在后,是a先参与运算之后再自增1.
作者: Wilsoncyf    时间: 2015-4-16 09:11
答案是: 13
             38
             13
             37吧,
关键是要理解这个 ++a 和 a++ 的运算顺序, ++a 是把 a加1后,再使用a的值,而a++,则是先使用a的值,再把a加一

作者: 黑马小符    时间: 2015-4-16 09:14
也就是说第一的++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。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2