public class c { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 0;;i++){
if(i==-10) System.out.println(i);
if(i==10) System.out.println(i);
if(i==1000*1000*5) System.out.println(i);
if(i==-1) break;
}
}}
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 0;;i++){
if(i==-10) System.out.println(i);
if(i==10) System.out.println(i);
if(i==1000*1000*5) System.out.println(i);
if(i==-1) break;
}
}}
i从0开始,加啊加的,就变成01111...1(2进制),这时候再+1,就溢出,变成10000000 ...00,这个是一个负数的补码,而且负了很多(好想是-2147483648的补码)然后慢慢加1,终于上升到-10的补码,最后再上升变成-1,退出循环了。
10
5000000
-10
这个是因为for循环没有 进入条件判断,直接就进入了
而到了里面之后呢
初始值为0 每个都不相等
执行迭代部分,也就是i++
之后再直接进入
如此循环,每次加1
到了第11轮的时候,i=10了 就会执行后面那条语句,输出10
之后再进入i++ 比较的过程,
等i=1000*1000*5的时候,再输出后面语句,输出5000000
之后呢又是i++ 进入比较每个if的过程
等到到了int类型的最大值得时候,大概20多亿,具体多少忘了,再加的话就会变成一个非常小的负数,
然后负数每次加一,执行20多亿次,
就等于-10 了,输出后面的语句,也就是-10
然后 再i++ 比较
9次之后,等于-1 执行后面的语句break;
跳出for循环大体就是这个样子了,这只是一个过程,也许有的地方你不懂,但我相信随着你的继续学习,一定会自己理解的,写的不好的地方呢,也请谅解
当累加到 -10的时候 输出。