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
经典问题:byte b = 1、b = b + 1、b +=1
最新推荐文章于 2022-07-17 18:30:14 发布