黑马程序员技术交流社区

标题: 这段代码的运行结果为什么是C呢? [打印本页]

作者: 格城先生    时间: 2016-4-10 20:07
标题: 这段代码的运行结果为什么是C呢?
   
b1和b2都定义为byte类型,相乘的话也应该是byte类型,为什么不能赋值给 byte b3 呢?

  以下代码的运行结果为?
classTest{
    public static void main(String[]args){
byteb1 = 5;
byteb2 = 2;
byteb3 = b1*b2;  
          }
}
A       10
B       52
C       编译错误
D      以上都不对


作者: IT金城武    时间: 2016-4-10 21:20
byte类型数据在运行时 默认转换成int类型
作者: 陈文广    时间: 2016-4-10 21:44
两个btye数据类型的变量 参与运算的时候会自动类型提升为int 类型 结果也是int 类型, 那么第三句就会报类型转换异常
作者: 15614014298    时间: 2016-4-10 21:50
C       编译错误
作者: 马儿不吃草    时间: 2016-4-10 22:08
先提升为int类型了,int类型不能赋值给byte
作者: whb7762300    时间: 2016-4-10 22:29
byteb3 = b1*b2; 此时的b1,b2会默认转化为int类型,int类型数据不能赋值给byte类型
作者: lidandan    时间: 2016-4-10 22:42
楼上正解啊
作者: 梧桐望穹    时间: 2016-4-10 22:46
会有自动类型提升的,不过可以加强转吧
作者: zwb690949450    时间: 2016-4-11 22:41
这个,加强转
作者: xi502586913    时间: 2016-4-11 22:44
来个byte强转
作者: 不要想静静    时间: 2016-4-11 22:49
b1和b2相乘时默认转换成了int类型,所以 编译错误。
作者: 夜语    时间: 2016-4-11 22:50
这个有可能损失精度




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