当前位置: 技术问答>java相关
byte类型
来源: 互联网 发布时间:2015-06-30
本文导语: 为什么以下代码会错? byte a=1; byte b=2; byte c=a+b;(error) | java中整数运算是取模的,在你超出计算范围时,不会上溢或下溢,相反发生回转,其实a+b的返回类型是int,如int c=a+b不会出错,要不就...
为什么以下代码会错?
byte a=1;
byte b=2;
byte c=a+b;(error)
byte a=1;
byte b=2;
byte c=a+b;(error)
|
java中整数运算是取模的,在你超出计算范围时,不会上溢或下溢,相反发生回转,其实a+b的返回类型是int,如int c=a+b不会出错,要不就byte c=(byte)(a+b)
|
回:为什么两个byte相加会超出范围而,byte c=1+2;正确呢。
因为1和2是Integer Literal,所以Java编译器能首先判断出1+2的两个操作数都分别落入byte的数值范围内),故能编译通过;
而a+b的情况下,Java编译器不能确定a+b是否超出,因而对于有Identifier参与的加法式会取integer为结果
因为1和2是Integer Literal,所以Java编译器能首先判断出1+2的两个操作数都分别落入byte的数值范围内),故能编译通过;
而a+b的情况下,Java编译器不能确定a+b是否超出,因而对于有Identifier参与的加法式会取integer为结果