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++)这句话没有被执行?

解决方案 »

  1.   

    for(;;--j) 
    执行了啊,所以最后j才会变成-1啊,这个for是条件永远成立的循环,通过里面的break来跳出循环啊
      

  2.   

    题目上是--j,就是说for后面括号里面会一直在做j-1,直到在for中i>j,也就是说j<0(即j=-1)时,循环通过break强制退出。System.out.println("i="+i+",j="+j); 代表的是输出"i="加上i的值,然后再加上"j="再加上j的值。
      

  3.   

    for(;;--j) 
     if(i>j)break tp
    相当于
    for(j=5;j>=i;--j)我怎么没有看到i++ 啊
    你不是说System.out.println("i="+i+",j="+j); 这里的吧!
    这里的加 不是+1;只是连接起来的符号罢了!
      

  4.   

    你要理解:++i和--i、i++和i-- 的區別。
      

  5.   

    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
    再贴一遍原题
      

  6.   

    原来是搂主第一次的帖子有问题!难怪云里雾里的!外部循环中要是for(;;++i)就应该选择A了!这里i的值是0。
      

  7.   

    哦 这样啊 那我给你个解释吧
    关于for循环的三个条件的执行顺序是这样的:
    1.初始化
    2.比较条件
    3.执行循环体
    4.改变值
    所以对于这个程序 在执行
    for(;;--j) 
    if(i>j)break tp
    的时候 i的值还是0;但是由于break tp在内层循环中 所以当条件i>j满足时就直接退出tp而不进行i++了
    所以答案应该是 i=0,j=-1
      

  8.   

    windproof() ( ) 信誉:100    Blog  2006-10-12 8:19:50  得分: 0  
       
    原来是搂主第一次的帖子有问题!难怪云里雾里的!外部循环中要是for(;;++i)就应该选择A了!这里i的值是0。为什么++i就选a阿?