Jok*_*ker 21 java int compiler-errors
我正在初始化两个整数a和b.
它编译好,a但有一个错误b.
public class Main_1 {
public static void main(String[] args) {
int a = -2147483648; //Working fine
int b = -(2147483648); //Compilation error: The literal 2147483648 of type int is out of range
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Tun*_*aki 50
原因是int数据类型在范围内具有有效值[-2147483648, 2147483647].
当您2147483648在括号内包裹时,它将成为一个将被计算为的表达式int.但是,2147483648太大而不适合int(太大了).
问题不会发生,-2147483648因为它是一个有效的int值.
JLS的相关部分:
2147483648,整数字面值被视为int默认值(第3.10.1节)
如果整数文字
long后缀为ASCII字母L或l(ell),则为整数文字; 否则它是类型int(§4.2.1).
Tho*_*aud 11
int值从.-2147483648到2147483647.所以-(2147483648)是OutOfRange因为括号内的值作为评价int.您可以放入括号中的最大值是
Integer.MAX_VALUE //Which is equals to 2147483647
Run Code Online (Sandbox Code Playgroud)
编译错误很明显:您正在使用int超出范围的文字.如果你真的想这样做,你可以使用long文字:
int b = (int) -(2147483648L);
Run Code Online (Sandbox Code Playgroud)
或double文字:
int b = (int) -(2147483648.0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |