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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

byte c,b=1;c=b++;System.out.println(b); System.out.println(c)
b结果就是2了
跟之前有什么不同,难道上面的一个莫有进行b++

17 个回复

倒序浏览
没看出来楼主在纠结什么。b原来等于1.  c = b++之后  c先用b的值  c就是1,b自加1  b就是2啦

点评

重点在标题  发表于 2015-7-10 14:01
回复 使用道具 举报
我只记住  不要挖这样的陷阱..
不要在单个的表达式中对相同的变量赋值超过一次.
在C中这结果就和你现在想的一样了...
看这里大神的解释:http://www.ticmy.com/?p=43
回复 使用道具 举报
c=b++,执行中是  c = b;  b++,即将b值(1)赋给c,b值由1自增成为2,这个表达式执行结果c=1;b=2;
回复 使用道具 举报
c=b++就是先将b赋值给c然后再对b进行自增,也就是c=1,b=2
回复 使用道具 举报
我自己对于这种情况的处理是,++或者--在前就先执行++或者--操作,在参与其他运算;相反,如果++或者--在后面,先参与运算,再执行++或者--操作。
回复 使用道具 举报
朙兲 中级黑马 2015-7-10 22:12:12
7#
楼上的回答的很正确
回复 使用道具 举报
心宥 初级黑马 2015-7-11 13:22:09
8#
打印的b是哪个
回复 使用道具 举报
心宥 初级黑马 2015-7-11 13:29:49
9#
byte b=1;b=b++; 等效于 byte b=1;b=1++; 然后先赋值再自增,这样理解才对吧
回复 使用道具 举报
* byte b = 10;
        * b++;
        * b = b + 1;
        * 问哪句会报错,为什么
回复 使用道具 举报
因为b的值是先赋值给c的,再进行自增操作所以b的结果是2 c的结果是
回复 使用道具 举报
木子天涯 发表于 2015-10-26 23:44
* byte b = 10;
        * b++;
        * b = b + 1;

肯定是第三句语句啊  只要是赋值语句 = 两边的数据类型 要一致,但是考虑到整数的默认数据类型,所以一般要进行数据类型转换。
回复 使用道具 举报
代码可以看成
c=b;
b=b+1;
回复 使用道具 举报
在赋值语句中自增(++)和自减(--)放在变量左右是不一样,放在左边是先执行自增或自减在赋值,放在右边是先赋值再自增或自减。
回复 使用道具 举报
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:20
16#
b先赋值在自加
回复 使用道具 举报
++在前,先++在等于;++在后,先等于,后++。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马