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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


    • byte b = 10;
    • b++;
    • b = b + 1;
    • 问哪句会报错,为什么


求答案  

11 个回复

倒序浏览
本帖最后由 3174918418 于 2015-8-22 22:22 编辑

b = b + 1;

回复 使用道具 举报
b = b + 1报错,b+1的b会主动提升为int类型
回复 使用道具 举报
后者报错~~~~~
回复 使用道具 举报
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 在相加 )
回复 使用道具 举报
Thank you  
回复 使用道具 举报
b= b+1会报错  在进行计算时会默认自动转型  int类型的是四个字节 byte是一个字节  会报可能损失精度的错误
回复 使用道具 举报
水的一手好贴啊
回复 使用道具 举报
技术分挺高啊
回复 使用道具 举报
b=b+1这句会报错
回复 使用道具 举报
b=b+1会报错;因为b+1中的b为byte型,在将b+1的值赋给b前(b+1)的b会提升为int型。编译时会出现丢失精度的问题
回复 使用道具 举报
b = b + 1 ;这句会报错   b+1为byte型加int型,结果默认为是int型,int型转成byte型需要进行强转。因此该句会报错。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马