学习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
问题:
为什么解决方案是负数而不是正数?
Integer.MAX_VALUE
时,我们会自动转移到Integer.MIN_VALUE
... 反之是否也成立? - NoobEditorInteger.MIN_VALUE - 1 == Integer.MAX_VALUE
。 - Mena