gpt4 book ai didi

java - int 类型的意外输出

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:09 26 4
gpt4 key购买 nike

学习JAVA,我试图测试while循环的上限,该循环继续递增一个int。请看下面的程序:

 public class Test {

public static int a(){
int a = 10;
while(a > 9 )
++a;
return a;
}

public static void main(String[] argc) {

Test t = new Test();
int k = t.a();
System.out.println("k = "+(1 * k));
}
}

我知道 32 位的范围是从 -2,147,483,648 到 2,147,483,647,所以在此基础上,我期望输出为 2,147,483,647 但我得到的是:

k = -2147483648

我试过了

 System.out.println("k = "+(1 * k/2)); 

但仍然输出:

k = -1073741824

问题:

为什么本应为正的解却为负?

最佳答案

您将 a int 递增 1,直到达到 1 + Integer.MAX_VALUE,这会发生变化它的值为 -2147483648 == Integer.MIN_VALUE

这是你的循环注释:

// "infinite" loop as a is assigned value 10
while(a > 9)
// when a reaches Integer.MAX_VALUE, it is still incremented by 1
++a;
// loop condition now false, as value for a has shifted to -2147483648
return a;

关于java - int 类型的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25426900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com