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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 攻城狮 黑马帝   /  2012-1-21 15:43  /  1671 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 spiritleak 于 2012-1-21 17:31 编辑

class Demo1
{
        public static void main(String []args)
        {
                int i = 0, j = 5;
                tp: for (;;)//tp: 标号 for (;;) 无限循环
                {
                        i++; //i++ 后i=1
                        for(;;)
                        {
                                if(i > j--) //if(1>5--) 就执行 break tp;跳出外循环 这时j=4 因为-- 优先级比>高 所以先运算 继续内循环
                                        break tp;
                        }
                }
                System.out.println("i = " + i + ", j = "+ j); //i=1,j=-1;
        }
}

综上分析 当内循环 j--到0的时候就应该执行到 break tp;(1>0)
为什么结果是i=1 j=-1呢?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

2 个回复

倒序浏览
int i=0;那么执行i++;这句时i 的值还是0,因为i++是先拿i 的值进行运算,运算结束再将i 的值自增1 。然后就执行到for循环,if(i>j--)这句里的i 还是为0.那么当j为0时,0不大于0所以j 还得继续自减一次。当j =-1时判断条件不满足,这时才执行break tp;
所以i=0;j=-1

评分

参与人数 1技术分 +1 收起 理由
祁焱 + 1

查看全部评分

回复 使用道具 举报
孙海亮 发表于 2012-1-21 16:34
int i=0;那么执行i++;这句时i 的值还是0,因为i++是先拿i 的值进行运算,运算结束再将i 的值自增1 。然后就 ...

非常感谢  懂了 意思就是要等内循环运算结束后外循环的 i 才会++ 对吧  嘿嘿

评分

参与人数 1技术分 +1 收起 理由
祁焱 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马