byte a=3,b=4,c;
c=a+b;
报错
int a=3,b=4,c;
c=a+b;
不报错
byte报错我可以理解,int为什么不报错?
byte想加溢出的概率比int高很多。都限制,对于int不方便,都不限制,对byte,容易出现不容易发现错误。所以语法这么规定。
为啥会报错……又没超出int长度……
byte c = (byte)(a+b);
在java中,byte、short、char类型的变量在做运算时会自动向上转型为int。
byte a = 3, b = 4,c;
c = a + b;
其中: a + b表达式的值为int, 而接收变量c为byte(范围低,编译器报精度损失错);
int a = 3, b = 4,c;
c = a + b;
而这个表达式a + b俩个int相加还是int,接收变量是int,不会报错。
另:好的编程从习惯开始,定义变量最好一行一个
肯定阿,两个byte 相加的结果编译器默认为int类型,Int转byte就会报错,int c = a+b就没问题