黑马程序员技术交流社区
标题: 这段代码的运行结果为什么是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 |