为什么递增Java int最终导致负数?

我试图检查不同的输入并在java中创建无限循环,我发现一旦int超过最大限制,它就会变成负数-2147482958。我只是在无限循环中增加int

码:

public static void infiniteLoop(){

for(int i=0;i>-1;i++){

i = i + 1000;

System.out.println(i);

}

}

最后输出的价值是,

2147483337

-2147482958

现在,为什么会变成负数?

回答:

为什么会变成负面?

因为这是在int计算溢出时指定在Java中发生的事情。

JLS

15.18.2

“如果整数加法溢出,则结果是数学和的低阶位,以某种足够大的二进制补码格式表示。如果发生溢出,则结果的符号与整数的符号不同。两个操作数值的数学和。”


(这并不明确表示溢出总是给出负数。也并非总是如此。但是,如果您应用该规则,它的确说明了为什么增加Integer.MAX_VALUEby

+1会给您Integer.MIN_VALUE…)

以上是 为什么递增Java int最终导致负数? 的全部内容, 来源链接: utcz.com/qa/401393.html

回到顶部