为什么是(Integer.MAX_VALUE-Integer.MIN_VALUE) = -1
?
如果你在计算器上执行它会变成一个更大的正数,但在java中它是-1
?
答案 0 :(得分:3)
这是因为算术溢出:MIN_VALUE
是一个很大的负数,所以从MAX_VALUE
中减去它会产生正数,超出{{{ 1}}。
如果您希望与计算器上的结果相匹配,请在扣除之前将int
值转换为int
:
long
答案 1 :(得分:3)
整数溢出。如果你超出了整数可以容纳的界限,那么它会绕着另一边循环。
例如,尝试Integer.MAX_VALUE + 1
并查看它为您提供的内容。