黑马程序员技术交流社区
标题:
byte b = 10; b++; b = b + 1; 问哪句会报错,为什么
[打印本页]
作者:
739994889
时间:
2015-8-22 22:01
标题:
byte b = 10; b++; b = b + 1; 问哪句会报错,为什么
byte b = 10;
b++;
b = b + 1;
问哪句会报错,为什么
求答案
作者:
3174918418
时间:
2015-8-22 22:17
本帖最后由 3174918418 于 2015-8-22 22:22 编辑
b = b + 1;
作者:
kuikui
时间:
2015-8-22 22:23
b = b + 1报错,b+1的b会主动提升为int类型
作者:
后营男孩
时间:
2015-8-22 22:26
后者报错~~~~~
作者:
pengbeilin
时间:
2015-8-22 22:40
eclipse给了一个这样的答案:b = (byte) ( b + (byte)1);
分析一下啊
byte b = 10; //这句没问题的 变量初始化
b++;
b(1) = b(2) + 1;//这句这里的b(1)是byte类型的,b(2)是一个byte,1默认是一个int
//而外面又要强转的原因就是
(那么b= b1 + b2;怎么又会编译出错呢,而且 b1,b2都是byte型的,这里java又有自己的一个机制,就是防止两个小数相加超出自己所表示的范围,把b1 ,b2变成 int 在相加 )
作者:
739994889
时间:
2015-8-23 22:00
Thank you
作者:
亦如梦幻泡影
时间:
2015-8-23 22:28
b= b+1会报错 在进行计算时会默认自动转型 int类型的是四个字节 byte是一个字节 会报可能损失精度的错误
作者:
寒星在天
时间:
2015-8-23 22:38
水的一手好贴啊
作者:
G_Y_C黑马
时间:
2015-8-23 23:05
技术分挺高啊
作者:
流觞曲水
时间:
2015-8-23 23:08
b=b+1这句会报错
作者:
流觞曲水
时间:
2015-8-23 23:12
b=b+1会报错;因为b+1中的b为byte型,在将b+1的值赋给b前(b+1)的b会提升为int型。编译时会出现丢失精度的问题
作者:
taoaisheng
时间:
2015-8-24 15:35
b = b + 1 ;这句会报错 b+1为byte型加int型,结果默认为是int型,int型转成byte型需要进行强转。因此该句会报错。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2