黑马程序员技术交流社区

标题: byte b=1;b=b++;System.out.println(b);最后打印为什么是1不是2 [打印本页]

作者: 形而上孤独    时间: 2015-7-10 13:52
标题: byte b=1;b=b++;System.out.println(b);最后打印为什么是1不是2
byte c,b=1;c=b++;System.out.println(b); System.out.println(c)
b结果就是2了
跟之前有什么不同,难道上面的一个莫有进行b++
作者: 黑马和大灰狼    时间: 2015-7-10 13:59
没看出来楼主在纠结什么。b原来等于1.  c = b++之后  c先用b的值  c就是1,b自加1  b就是2啦
作者: zhhrai    时间: 2015-7-10 15:00
我只记住  不要挖这样的陷阱..
不要在单个的表达式中对相同的变量赋值超过一次.
在C中这结果就和你现在想的一样了...
看这里大神的解释:http://www.ticmy.com/?p=43
作者: 落叶随尘    时间: 2015-7-10 15:27
c=b++,执行中是  c = b;  b++,即将b值(1)赋给c,b值由1自增成为2,这个表达式执行结果c=1;b=2;
作者: e咕噜    时间: 2015-7-10 21:59
c=b++就是先将b赋值给c然后再对b进行自增,也就是c=1,b=2
作者: 我不信命ZW    时间: 2015-7-10 22:07
我自己对于这种情况的处理是,++或者--在前就先执行++或者--操作,在参与其他运算;相反,如果++或者--在后面,先参与运算,再执行++或者--操作。
作者: 朙兲    时间: 2015-7-10 22:12
楼上的回答的很正确
作者: 心宥    时间: 2015-7-11 13:22
打印的b是哪个
作者: 心宥    时间: 2015-7-11 13:29
byte b=1;b=b++; 等效于 byte b=1;b=1++; 然后先赋值再自增,这样理解才对吧
作者: 木子天涯    时间: 2015-10-26 23:44
* byte b = 10;
        * b++;
        * b = b + 1;
        * 问哪句会报错,为什么
作者: 暴力反射    时间: 2015-10-27 08:52
因为b的值是先赋值给c的,再进行自增操作所以b的结果是2 c的结果是
作者: cherrycool    时间: 2015-10-27 09:06
木子天涯 发表于 2015-10-26 23:44
* byte b = 10;
        * b++;
        * b = b + 1;

肯定是第三句语句啊  只要是赋值语句 = 两边的数据类型 要一致,但是考虑到整数的默认数据类型,所以一般要进行数据类型转换。
作者: android小学徒    时间: 2015-10-27 09:58
代码可以看成
c=b;
b=b+1;
作者: sharplance    时间: 2015-10-27 11:36
在赋值语句中自增(++)和自减(--)放在变量左右是不一样,放在左边是先执行自增或自减在赋值,放在右边是先赋值再自增或自减。
作者: dushine2000    时间: 2015-10-27 12:10
byte c , b =1  ;
c=b++; //b++  ——>b在前  故先进行b对c的赋值运算-->c=1;
            //赋值后再进行b++的运算,b++=b+1=2.所以b=2,c=1
System.out.println(b);
System.out.println(c)
作者: Sayman    时间: 2015-10-27 12:23
b先赋值在自加
作者: fenger7    时间: 2015-10-27 12:33
++在前,先++在等于;++在后,先等于,后++。




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