Math.incrementExact(int a)



为什么它不抛出每个API和异常?

返回递增 1 的参数,如果 结果溢出一个整数。

System.out.println(Math.incrementExact(2_147_483_647 + 1));

返回 -2147483647

这是因为您将Integer.MIN_VALUE传递给Math.incrementExact函数。

首先计算表达式2_147_483_647 + 1,由于表达式溢出,结果-2147483648。然后你把它传递给Math.incrementExact,这会导致-2147483647

你想做的是

System.out.println(Math.incrementExact(2_147_483_647));

这会导致java.lang.ArithmeticException: integer overflow.

因为你已经比最大值多了一个。 首先评估2_147_483_647 + 1

试试System.out.println(Math.incrementExact(2_147_483_646 + 1));

最新更新