黑马程序员技术交流社区
标题:
执行如下语句后i,j的值?
[打印本页]
作者:
施俊
时间:
2012-3-14 17:40
标题:
执行如下语句后i,j的值?
部分代码如下:
int i=1,j=8;
do
{
if(i++>--j)
continue;
}
while(i<4);
请教结果,并求教循环过程中i,j的变化过程,以及如何解释这段代码。
作者:
杨波
时间:
2012-3-14 19:56
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 的区别就可想的明白。
作者:
冯建鹏
时间:
2012-3-15 01:54
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
所以就循环了三次就结束了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2