黑马程序员技术交流社区

标题: 循环问题· [打印本页]

作者: 攻城狮    时间: 2012-1-21 15:43
标题: 循环问题·
本帖最后由 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呢?
作者: 孙海亮    时间: 2012-1-21 16:34
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
作者: 攻城狮    时间: 2012-1-21 17:28
孙海亮 发表于 2012-1-21 16:34
int i=0;那么执行i++;这句时i 的值还是0,因为i++是先拿i 的值进行运算,运算结束再将i 的值自增1 。然后就 ...

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2