Java 数学增量精确(整数a)

Java 数学增量精确(整数a),java,api,Java,Api,为什么它不按照API抛出异常和异常 返回递增1的参数,如果 结果溢出一个int 返回-2147483647,因为您已经比最大值多了一个。首先计算2_147_483_647+1 尝试System.out.println(数学增量精确(2_147_483_646+1))这是因为您将Integer.MIN_值传递给Math.incrementExact函数 首先计算表达式2\u 147\u 483\u 647+1,由于它溢出,结果是-2147483648。然后将其传递给Math.incrementEx

为什么它不按照API抛出异常和异常

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

返回-2147483647

,因为您已经比最大值多了一个。首先计算
2_147_483_647+1


尝试
System.out.println(数学增量精确(2_147_483_646+1))

这是因为您将
Integer.MIN_值
传递给
Math.incrementExact
函数

首先计算表达式
2\u 147\u 483\u 647+1
,由于它溢出,结果是
-2147483648
。然后将其传递给
Math.incrementExact
,结果是
-2147483647

你想做的是

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

这会导致
java.lang.arithmetricException:整数溢出

,因为在调用
Math之前,会在
2_147_483_647+1
中溢出。resultA方法调用上的incrementExact
无法更改将结果传递给它的表达式的编译方式。
System.out.println(Math.incrementExact(2_147_483_647));