标题: 来,再玩一个,下面就发正经题目了 [打印本页] 作者: 杨_扬 时间: 2012-7-6 10:15 标题: 来,再玩一个,下面就发正经题目了 public class InTheLoop {
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;
public static void main(String[] args) {
int count = 0;
for (int i = START; i<=END; i++){
count ++;
}
System.out.println(count);
}
}
来,猜运行结果吧作者: 艾衍年 时间: 2012-7-6 13:39
亲,是不是这样的,Start和END之间相差100,所以不过Integer.MAX_VALUE,也就是END是多少,for循环都会执行100次,所以结果是100。作者: 艾衍年 时间: 2012-7-6 13:42
所以不管Integer.MAX_VALUE,不是不过,…额,看到了吧,错别字作者: 乐峰 时间: 2012-7-6 14:37
是死循环。作者: 汤密奕 时间: 2012-7-6 22:40
是死循环哦,i<=END,END是int型的最大值,而i是int型,条件永远满足。。。作者: 李志群 时间: 2012-7-6 23:38
这个人很坏!有电脑冒烟的没?{:soso_e103:}作者: 曹恒业 时间: 2012-7-6 23:42
public class InTheLoop {
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;
public static void main(String[] args) {
int count = 0;
for (int i = START; i<=END; i++){
count ++;
}
System.out.println(count);
}
}
死循环!
当 i 的值增加到Integer.MAX_VALUE时,此时 i 和END值相等,都是Integer.MAX_VALUE,然后count执行自增运算,此时count值为100;
接着 i 值自增,由于该值越界溢出,变成int中的最小值,所以再次判断循环条件依然满足,则循环继续,count继续自增;
i 的值继续从int的最小值自增到最大值,依此循环,成为死循环。
作者: 马林康 时间: 2012-7-7 01:39
哈哈 学习了作者: 张凯 时间: 2012-7-7 09:38
public class InTheLoop {
public static final int END = Integer.MAX_VALUE;//此题陷阱,END的值是int类型的最大值,是2的31次方减1
public static final int START = END - 100;
public static void main(String[] args) {
int count = 0;
for (int i = START; i<=END; i++){//定义i为整型,i永远都小于等于整型的最大值,因此条件一直满足,
count ++;//循环会一直下去。
}
System.out.println(count);
}
}