黑马程序员技术交流社区
标题:
有个不理解的问题,求解~
[打印本页]
作者:
czb
时间:
2014-9-14 09:34
标题:
有个不理解的问题,求解~
int a=2;
1//int b=(a++)+3*a; System.out.println(b); //11
2//int b1=(++a)+3*a; System.out.println(b1); //12
3//int c=a+3*(a++); System.out.println(c); //8
4//int c2=a+3*(++a); System.out.println(c2); //11
下面的a不受上面操作的影响.
我只想问下,第一个表达式中,先执行a++,a为2,后面的a变为3,即2+3*3=11
那么第三个表达式中,先执行a++,a为2,那按结果来算的话,为什么前面的a也是2,即2+3*2=8
难道是+a放在前面跟后面的原因么?求详细解释!
果然经过计算把表达式三中变为int c=3*(a++)+a; System.out.println(c); 结果即为9,这是什么原因呢~求解+a所放位置不同的区别!(注意不是++a,是+a)
作者:
蒙奇.D.路飞
时间:
2014-9-14 10:21
3,计算的过程是:a(2初始化值)+3*(a(这里的a参与运算,所以先用原来的值和3运算,之后在自增)++)
所以就是2+3*2=8;
int c=3*(a++)+a的执行过程是:3*(a(这里的a参与运算,所以先用原来的值和3运算,之后在自增)++)此时a已自增变成了a=3,所以后面的a的值就是3,所以就是3*2+3=9
作者:
czb
时间:
2014-9-14 10:25
蒙奇.D.路飞 发表于 2014-9-14 10:21
3,计算的过程是:a(2初始化值)+3*(a(这里的a参与运算,所以先用原来的值和3运算,之后在自增)++)
所以 ...
sogar~!!!!!!!!!!
作者:
careit
时间:
2014-9-14 10:33
good 了解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2