刚学java
byte a =1;
byte b=2;
byte c=a+b; 为什么会报错int d = a+b ; 这样可以

解决方案 »

  1.   

    byte char short数据在做数值运算时,会自己转换为int类型再做相应的运算,运算结果也是int类型,如果你把一个int类型赋值给一个比int小的类型,也就是byte,char,short之一,有可能会损失高位字节,所以编译器会报错,报错就是提醒你这样做会损失高位字节,如果你一定要这样做,你必须明明白白的告诉编译器,也就是强制类型转换。
    byte c=(int)(a+b);
      

  2.   

    错了。
     byte c=(byte)(a+b);
      

  3.   

    这个问题是这样的!
    byte在做运算的时候会自动转换成int类型所以a+b的结果是int类型
    如果一定要byte类型就要像2搂那样的
    byte c=(byte)a+b;
    由int类型转成byte有可能会损失高位字节