A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨_扬 中级黑马   /  2012-7-6 10:15  /  2130 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);
        }
}

来,猜运行结果吧

8 个回复

倒序浏览
亲,是不是这样的,Start和END之间相差100,所以不过Integer.MAX_VALUE,也就是END是多少,for循环都会执行100次,所以结果是100。
回复 使用道具 举报
所以不管Integer.MAX_VALUE,不是不过,…额,看到了吧,错别字
回复 使用道具 举报
是死循环。
回复 使用道具 举报
是死循环哦,i<=END,END是int型的最大值,而i是int型,条件永远满足。。。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个人很坏!有电脑冒烟的没?{:soso_e103:}
回复 使用道具 举报
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的最小值自增到最大值,依此循环,成为死循环。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 不错不错!赞一个!

查看全部评分

回复 使用道具 举报
哈哈 学习了
回复 使用道具 举报
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);
         }
}

这样循环将进入一个死循环,直到有一天你看到电脑冒烟了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马