黑马程序员技术交流社区

标题: 有个不理解的问题,求解~ [打印本页]

作者: 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