2 luke003 luke003 于 2016.04.01 20:55 提问

菜鸟提问,求大神解答

byte b1=10;
byte b2=20;
byte b3=b1+b2;
这组代码为什么会报错?好像是类型不匹配,想不通啊

4个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.04.01 21:14
 +号会把两边的类型转换为int后再相加,所以报类型错误,可以强转
 byte b3=(byte)(b1+b2)

hyl910819
hyl910819   2016.04.01 21:52

两个byte类型值相加,会提升为int类型。需要类型强制转换, byte b3=(byte)(b1+b2)

donggang1992
donggang1992   2016.04.02 00:16

short、byte、char 在运算时会自动类型提升,变成int类型,然后int类型(4字节)的运算结果在赋给byte(1字节)时需要类型强制转换,进行高位截断

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.01 21:43
    前两个是直接赋值字节数据范围内的int类型常量,编译器会自然识别并自动转换为byte类型,而第三行是变量引用,编译器无法识别两个数,所以需要强制转换的。
Csdn user default icon
上传中...
上传图片
插入图片