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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© czb 中级黑马   /  2014-9-14 09:34  /  770 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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)

3 个回复

倒序浏览
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
回复 使用道具 举报
蒙奇.D.路飞 发表于 2014-9-14 10:21
3,计算的过程是:a(2初始化值)+3*(a(这里的a参与运算,所以先用原来的值和3运算,之后在自增)++)
所以 ...

sogar~!!!!!!!!!!
回复 使用道具 举报
good 了解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马