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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 大湿爽 中级黑马   /  2015-9-23 21:48  /  866 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte b1 = 3, b2 = 4, b;
                b = b1 + b2;
                b = 3 + 4;
                哪句是编译失败的呢?为什么呢?

4 个回复

倒序浏览
你猜,                    
回复 使用道具 举报
加断点你自己就知道了
回复 使用道具 举报
b = b1 + b2;会报错
b = 3 + 4;不会报错。

错误原因:涉及到编译器编译程序时候的细节,之所以byteb=3+7;,没有报错,是因为3和7都是
常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。而b=b1
+b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个
byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范
围,因此就会报错。
回复 使用道具 举报
第二句     b1  b2相加 的结果不确定  不能赋值给Byte类型的变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马