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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施俊 中级黑马   /  2012-3-14 17:40  /  2102 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

部分代码如下:
int i=1,j=8;
do
{
if(i++>--j)
continue;
}
while(i<4);
请教结果,并求教循环过程中i,j的变化过程,以及如何解释这段代码。

2 个回复

倒序浏览
lz可加入一些输出语句看看效果,稍作修改:
int i=1,j=8;
                do
                {
                System.out.println("i:"+i+"--j:"+j);
                if(i++>--j)
                {
                        System.out.println("i1:"+i+"--j1:"+j);
                    continue;
                }
                }
                while(i<8);
结果是:
i:1--j:8
i:2--j:7
i:3--j:6
i:4--j:5
i:5--j:4
i1:6--j1:3
i:6--j:3
i1:7--j1:2
i:7--j:2
i1:8--j1:1
从输出结果可以看出,
一,每执行一次循环,i 加 1 ,j 减 1.
二,在做if(i++>--j)比较时,用的是 i 加前的值和 j 减后的值。
其实lz看过++i 和 --i 的区别就可想的明白。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
int i=1,j=8;
do
{
if(i++>--j)
continue;
}
while(i<4);
do{执行语句;}while(判断);循环是不管条件是不是为真,先执行语句,
然后再判断条件是否为真,这次判断将影响到下次要不要进行循环;你写的代码if里面的continue根本就执行不到,
因为i不可能大于j的因为while(i<4).这样涉及到运算符的优先级问题++i是先将i本身加1后
再去参加比较运算,j--是先将j本身参加比较后再自身减1,这样第一次i=2,j=8,第二次i=3,j=7,第三次i=4,j=6,
有人可能会问为什么i能等于4呢,当i等于3时,条件还是成立的所以就运行了循环体内的代码,当运行到if时i就又加1,再次判断为false
所以就循环了三次就结束了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马