当前页面: 开发资料首页 → J2SE 专题 → for(;;i++)这样写怎么理解
for(;;i++)这样写怎么理解
摘要: for(;;i++)这样写怎么理解
public class FooBar{
public static void main(String[] args){
int i=0,j=5;
4) tp:
for(;;--j)
if(i>j)break tp;
}
System.out.println("i="+i+",j="+j);
}
}
what is the result?
A.i=1,j=-1 B. i=0,j=-1 C.i=1,j=4 D.i=0,j=4
E.compile error at line 4
Answer:B
我想问为什么 for(;;i++)这句话没有被执行?
for(;;--j)
执行了啊,所以最后j才会变成-1啊,这个for是条件永远成立的循环,通过里面的break来跳出循环啊
那么为什么j一直0,不是j++吗
题目上是--j,就是说for后面括号里面会一直在做j-1,直到在for中i>j,也就是说j<0(即j=-1)时,循环通过break强制退出。
System.out.println("i="+i+",j="+j); 代表的是输出"i="加上i的值,然后再加上"j="再加上j的值。
for(;;--j)
if(i>j)break tp
相当于
for(j=5;j>=i;--j)
我怎么没有看到i++ 啊
你不是说System.out.println("i="+i+",j="+j); 这里的吧!
这里的加 不是+1;只是连接起来的符号罢了!
你要理解:++i和--i、i++和i-- 的區別。
public class FooBar{
public static void main(String[] args){
int i=0,j=5;
4) tp: for(;;i++){
for(;;--j)
if(i>j)break tp;
}
System.out.println("i="+i+",j="+j);
}
}
what is the result?
A.i=1,j=-1 B. i=0,j=-1 C.i=1,j=4 D.i=0,j=4
E.compile error at l
再贴一遍原题
有i++的呀
原来是搂主第一次的帖子有问题!难怪云里雾里的!外部循环中要是for(;;++i)就应该选择A了!这里i的值是0。
哦 这样啊 那我给你个解释吧
关于for循环的三个条件的执行顺序是这样的:
1.初始化
2.比较条件
3.执行循环体
4.改变值
所以对于这个程序 在执行
for(;;--j)
if(i>j)break tp
的时候 i的值还是0;但是由于break tp在内层循环中 所以当条件i>j满足时就直接退出tp而不进行i++了
所以答案应该是 i=0,j=-1
windproof() ( ) 信誉:100 Blog 2006-10-12 8:19:50 得分: 0
原来是搂主第一次的帖子有问题!难怪云里雾里的!外部循环中要是for(;;++i)就应该选择A了!这里i的值是0。
为什么++i就选a阿?
选B呀