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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

byte b1=3,b2=4,b;b=b1+b2;
b=3+4;
问题:哪个会编译失败?

讨论:未上机前,我的答案是两个都可以成功,原因是b=3+4,等号右面是int型,赋值给byte型是,byte型自动提升为int型。结果证明,这个确实变异没问题;b=b1+b2我认为也没问题,原因是b1和b2都为byte型,他们的和也为byte型,赋值给byte型的b是完全没有问题的,但是编译失败,请问原因是什么?

5 个回复

倒序浏览
我的理解是同是byte类型的数据相加结果可能超过byte类型的最大值,所以报错
回复 使用道具 举报
boboyuwu 来自手机 高级黑马 2015-9-11 11:24:47
藤椅
如果指定了byte的值没有超过范围不会出错,但是如果参与了计算计算没有超出范围也会编译出错因为系统不知道你计算之后会不会超出范围
回复 使用道具 举报
这个在视频里看过。忘了。刚才百度了下。说是 3  4事常量。相加在byte-128到127之间,很明显的。而写成b1+b2默认是int类型了,但是机器不能保证他们相加还在byte的范围呢。所以就会报错。除非强转。
和你的思路是一样的
回复 使用道具 举报
浮光掠影 发表于 2015-9-11 13:58
这个在视频里看过。忘了。刚才百度了下。说是 3  4事常量。相加在byte-128到127之间,很明显的。而写成b1+b ...

谢谢解答
回复 使用道具 举报
boboyuwu 发表于 2015-9-11 11:24
如果指定了byte的值没有超过范围不会出错,但是如果参与了计算计算没有超出范围也会编译出错因为系统不知道 ...

谢谢回复
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马