2012-11-14 54 views
0

我的代碼裏面是這樣的: -兩個for循環和if語句是

for() //outer for 
{ 
    for() //inner for 
    { 
     if() 
     { 
     break; 
     } 
    } 
} 

如果break語句執行下一步操作將是其中的for循環? 我知道這是一個非常抽象的問題,但我真的沒有時間寫完整的代碼。謝謝。

+0

沒有像'if-loop'這樣的事情,'break'只會影響最近的最內層循環塊。 –

回答

4

break只會打破**loop**的內部。 它打破了最接近它的環路。

在您的示例中,如果if條件滿足,它將停止inner for循環的迭代並返回(繼續)outer for循環。

4

break語句終止直接封閉在它出現doforswitch,或while語句的執行。在這種情況下,這意味着僅破壞內部for

編輯:標準參考:6.6.1 break語句[stmt.break]

1 break語句應僅在迭代語句發生或 switch語句,並導致終止迭代語句或switch語句的最小圈數 ;如果有控制權,控制權轉移到 聲明之後。

+0

那麼它不會突然出現嗎? –

+0

@PrakharMohan看到我的評論。這就是說,'範圍'這個詞在這個答案中並沒有被精確地使用。 –

+0

@PrakharMohan - 「break語句終止最近的包含do,for,switch或while語句在其中出現的執行」 – jn1kk

0

由於break只會離開其封閉範圍,因此您需要一種方法來打破外部循環。你用來管理狀態的東西可以是任何東西,但是在最簡單的形式中,你可以使用一個布爾值來檢查它,以及最外層循環中的原始狀態。

bool breakLoop = false; 
for(...; ... && !breakLoop; ...) //outer for 
{ 
    for() //inner for 
    { 
     if() 
     { 
     breakLoop = true; 
     break; 
     } 
    } 
} 
+0

真的嗎?你的代碼示例遠不是正確的(尤其是外部的條件) –

+0

我修正了for語句。 – John

+0

@ g-makulik:我不得不快速寫出回覆,並做出小小的錯字,放鬆。 –

1

如果你喜歡,你可以使用goto來打破外層循環。