2011-05-18 118 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並跳過執行這些語句,如果它是。循環將繼續,但。