2011-05-18 89 views
1

以下两个构造之间的区别是什么?我得到一个不同的输出为每个:for循环中的复合条件

for (int counter = 0; (counter < numberOfFolds) && counter != currentFold; counter++) 
     { 
      if (instances[counter] < minimum) 
      { 
       return (currentFoldHasAtleastMinimum && true); 
      } 

     } 

AND

for (int counter = 0; (counter < numberOfFolds); counter++) 
     { 
      if (counter != currentFold) 
      { 
       if (instances[counter] < minimum) 
       { 
        return (currentFoldHasAtleastMinimum && true); 
       } 
      } 
     } 

本质上,第二个代码块,仅解除在所述化合物的条件的for循环,带着它里面使用附加的if语句(我可能在这里错过了一些非常基本的东西,可能真的很愚蠢,但我认为它们是一样的)。

请帮忙。看起来他们实际上并不一样,我也搞不明白为什么。如任一子条件为假(以便counter >= numberIfFoldscounter == currentFold

回答

1

在第一示例中,当counter等于currentFold循环终止。

在第二个示例中,当满足该条件时,循环将继续,而只会在counter < numberOfFolds为false时终止。

2

第一条件将尽快结束循环。第二个循环仅在counter >= numberOfFolds时终止。它将,但是,检查是否counter == currentFold并跳过执行这些语句,如果它是。循环将继续,但。