黑马程序员技术交流社区

标题: 基础题提问? [打印本页]

作者: 大湿爽    时间: 2015-9-23 21:48
标题: 基础题提问?
byte b1 = 3, b2 = 4, b;
                b = b1 + b2;
                b = 3 + 4;
                哪句是编译失败的呢?为什么呢?
作者: 善良的禽兽    时间: 2015-9-23 21:57
你猜,                    
作者: 安若曦    时间: 2015-9-24 19:54
加断点你自己就知道了
作者: 太子奕    时间: 2015-9-24 20:05
b = b1 + b2;会报错
b = 3 + 4;不会报错。

错误原因:涉及到编译器编译程序时候的细节,之所以byteb=3+7;,没有报错,是因为3和7都是
常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。而b=b1
+b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个
byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范
围,因此就会报错。
作者: lumangmang    时间: 2015-9-26 09:31
第二句     b1  b2相加 的结果不确定  不能赋值给Byte类型的变量




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2