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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹震国 中级黑马   /  2014-12-15 23:33  /  1941 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  Demo
{
        public static void main(String[] args)
        {
                int b = 9;
                b = (b++) +3;
                System.out.println(b);
        }
}

打印的b的值为什么是12,
我的理解是先运算b++然后+3.再把结果赋值给b.应该是13.可我的理解是错的。为什么?错在哪,请大神指教。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

19 个回复

倒序浏览
caobin 来自手机 中级黑马 2014-12-15 23:45:26
沙发
因为自增运算符++的优先级原本就大于+加法运算符,所以在这里括号并不会起到什么效果。
回复 使用道具 举报
他是先用b和3相加以后b在自增
回复 使用道具 举报
b++在后面b+3后才运算!
回复 使用道具 举报
如果没有括号,结果是正确的13.问题出现在++与()的问题上。
回复 使用道具 举报
因为b++的++在后面,所以它是先操作b这个数,就是b+3即9+3=12,运算完然后b再自增,自增完后b=4,最后再把12赋给b,所以最后输出的b为12。
回复 使用道具 举报

如果没有括号,结果是正确的13.问题出现在++与()的问题上。该问题可以简化为
      b=(b++);
对也括号来说,内部运算优先级高,故执行b++,算术运算符放在右边,则b++的值在以没有增加的值得到的结果参与括号的整个运算,得到括号运算结果为未增加的b。此时运算括号与其他的算术运算符运算结果,并赋值给左边的b。          关键在于这里,b在括号运算结束后,执行了+1运算,此时b为10!但传递出来的参与运算的值未增加的9.运算的结果又重新覆盖了原来的b。               b的值9     变为    10     又被12覆盖
      ***总结一下:括号内运算完,执行b自增1;但括号的返回值确实之前的b运算的值。                                                             ****  同理****若b=1;b=(b+++2)+2=5而不是6!那么请问b=1;b=(++b*2)*(b++*2)+2;  
     第一次回帖,有点乱,希望不影响你的好心情。

回复 使用道具 举报 1 0
极光_CDY 发表于 2014-12-16 00:11
如果没有括号,结果是正确的13.问题出现在++与()的问题上。该问题可以简化为
      b=(b++);
对也括号来 ...

b=(++b*2)*(b++*2)+2 ;输入法不好,请复制这个。谢谢
回复 使用道具 举报
Lscreat 中级黑马 2014-12-16 00:26:23
9#
先运算+法,得到值为12,那时候i才++,结果当然是12啦。
回复 使用道具 举报
b++先使用再加1, 可以写成这样:System.out.println(((b++) +3));就好理解了。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 quick3g 于 2014-12-16 01:20 编辑

只要理解 后加还是先加就容易分析了。类似的++,--,问题还有很多。多练一下。
回复 使用道具 举报
b++结果是9,但是b接下来会变成10,运算的时候是9+3
回复 使用道具 举报
b++是运算完载自增,int b=9; b=(b++)+3;是9+3赋值给b后,对之前的b=9自增,所以最后打印的结果是12.
回复 使用道具 举报 1 0
难题一个啊
回复 使用道具 举报
b++是先运算再自加,而且++的运算优先级是高于+的。加不加括号对于b++的优先级来说没影响,只是为了保证阅读性的
回复 使用道具 举报
有点理解了,谢谢大家的无私指导。
回复 使用道具 举报
先计算再自加:sleepy:
回复 使用道具 举报
后++中你可以吧(b++)整体的值看作是9,而b'的值是10.。整体(b++)的值9+2=11
回复 使用道具 举报
dwy_hm 中级黑马 2014-12-17 10:26:59
19#
先自增后自增的问题
回复 使用道具 举报
大家回复都很正解,学习了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马