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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

   
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      以上都不对

11 个回复

正序浏览
这个有可能损失精度
回复 使用道具 举报
b1和b2相乘时默认转换成了int类型,所以 编译错误。
回复 使用道具 举报
来个byte强转
回复 使用道具 举报
这个,加强转
回复 使用道具 举报
会有自动类型提升的,不过可以加强转吧
回复 使用道具 举报
楼上正解啊
回复 使用道具 举报
byteb3 = b1*b2; 此时的b1,b2会默认转化为int类型,int类型数据不能赋值给byte类型
回复 使用道具 举报
先提升为int类型了,int类型不能赋值给byte
回复 使用道具 举报
C       编译错误
回复 使用道具 举报
两个btye数据类型的变量 参与运算的时候会自动类型提升为int 类型 结果也是int 类型, 那么第三句就会报类型转换异常
回复 使用道具 举报
byte类型数据在运行时 默认转换成int类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马