经典问题:byte b = 1、b = b + 1、b +=1

1、正确
2、错误
3、正确
根本原因就是byte相计算的时候,如果不进行强制转换,都会编译错误。
byte b = 1,检查右边没有超过byte的范围(-128到127)。系统强转int 1为byte型;
b = b + 1,1默认int类型,b自动转型为int与1做加法,结果是int类型。把int类型赋值给byte类型的b。所有是类型错误。
b += 1,其实等价于 b = (byte)(b + 1);底层会对这个结果进行强转的,所有它编译的时候就没事;如果b是127,那么加1后变成128了,成了int类了,超过了byte类型的最大范围,系统会强转,把int类型的前三个高位丢弃,丢弃后,如果剩下的一位中,最高位为1,则取反加1,就变成负数了,如果最高位为0,直接把值赋给b。
转载网址:http://blog.csdn.net/zhaoyabei/article/details/33829167

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值