Java 长整数中的整数溢出乘积
Java Integer overflow product in a long integer
我有一个愚蠢的问题。
long val = Integer.MIN_VALUE * -1;
System.out.println(val);
为什么会打印 -2147483648
.
一个long
应该可以容纳上面的产品吧?输出不应该是 2147483648
乘积计算为 int
,然后转换为 long
。但是如果一个操作数很长,结果就是预期的结果。
将 -1
更改为 -1L
以计算为 long
。
public static void main(String[] args) {
long val = Integer.MIN_VALUE * -1;
long longVal = Integer.MIN_VALUE * -1L;
System.out.println(Integer.MIN_VALUE);
System.out.println(val);
System.out.println(longVal);
}
输出为
-2147483648
-2147483648
2147483648
我有一个愚蠢的问题。
long val = Integer.MIN_VALUE * -1;
System.out.println(val);
为什么会打印 -2147483648
.
一个long
应该可以容纳上面的产品吧?输出不应该是 2147483648
乘积计算为 int
,然后转换为 long
。但是如果一个操作数很长,结果就是预期的结果。
将 -1
更改为 -1L
以计算为 long
。
public static void main(String[] args) {
long val = Integer.MIN_VALUE * -1;
long longVal = Integer.MIN_VALUE * -1L;
System.out.println(Integer.MIN_VALUE);
System.out.println(val);
System.out.println(longVal);
}
输出为
-2147483648
-2147483648
2147483648