[英]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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.