我的代碼裏面是這樣的: -兩個for循環和if語句是
for() //outer for
{
for() //inner for
{
if()
{
break;
}
}
}
如果break語句執行下一步操作將是其中的for循環? 我知道這是一個非常抽象的問題,但我真的沒有時間寫完整的代碼。謝謝。
我的代碼裏面是這樣的: -兩個for循環和if語句是
for() //outer for
{
for() //inner for
{
if()
{
break;
}
}
}
如果break語句執行下一步操作將是其中的for循環? 我知道這是一個非常抽象的問題,但我真的沒有時間寫完整的代碼。謝謝。
break
只會打破**loop**
的內部。 它打破了最接近它的環路。
在您的示例中,如果if
條件滿足,它將停止inner for循環的迭代並返回(繼續)outer for循環。
的break
語句終止直接封閉在它出現do
,for
,switch
,或while
語句的執行。在這種情況下,這意味着僅破壞內部for
。
編輯:標準參考:6.6.1 break語句[stmt.break]
1 break語句應僅在迭代語句發生或 switch語句,並導致終止迭代語句或switch語句的最小圈數 ;如果有控制權,控制權轉移到 聲明之後。
那麼它不會突然出現嗎? –
@PrakharMohan看到我的評論。這就是說,'範圍'這個詞在這個答案中並沒有被精確地使用。 –
@PrakharMohan - 「break語句終止最近的包含do,for,switch或while語句在其中出現的執行」 – jn1kk
由於break
只會離開其封閉範圍,因此您需要一種方法來打破外部循環。你用來管理狀態的東西可以是任何東西,但是在最簡單的形式中,你可以使用一個布爾值來檢查它,以及最外層循環中的原始狀態。
bool breakLoop = false;
for(...; ... && !breakLoop; ...) //outer for
{
for() //inner for
{
if()
{
breakLoop = true;
break;
}
}
}
如果你喜歡,你可以使用goto來打破外層循環。
沒有像'if-loop'這樣的事情,'break'只會影響最近的最內層循環塊。 –