嗨,当我在程序
下运行时package com.test;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=5;
for(;;i++){
if(i<0){
System.out.println("Break");
break;
}
}
}
}
输出:休息。
怎么可能?任何人都可以解释
先谢谢。
答案 0 :(得分:0)
如果您将此行添加到代码中
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=5;
for(;;i++){
System.out.println("Current i: " + i);
if(i<0){
System.out.println("Break");
break;
}
}
}
您会在Integer.MAX_VALUE之后看到它会在Integer.MIN_VALUE重新开始,并在某个时间达到最终为零。
答案 1 :(得分:0)
我初始化为5,循环将迭代直到int的最大值 +2147483647之后,该值再次从int的最低值-2147483648开始,所以当条件满足且打印中断时负值开始。
答案 2 :(得分:0)
这是数字系统定义中数字系统定义的情况。(数字电子和数字系统)。
任何progarmming语言thers都是数字系统,例如8位有符号整数,它是-128到127.
所以,如果你输入128,它将被计为-128。 如果你输130,它将被计为-126。
sowhen max正整数值超过数字变为负数且condtion变为true。 这就是为什么要突破。
在循环中插入sop(i),你就会明白。