2013-07-24 23 views
0

在像這樣一個循環,如何退出一個`for`循環的一個單圈?

for (int i = 0; i < 5; i++) 
{ 
    int i_foo; 

    i_foo = foo(); 
    if (i < 5) 
     return; //<-------- Right here 

    footwo(); 
} 

我怎麼會返回一個循環的一個特定的大轉彎?我知道我可以使footwo()在i >= 5的條件下執行,但我想知道是否有辦法讓循環退出(只是一次)。

有關更多解釋,我希望for循環從頭開始並將1加1到i,就好像它剛完成循環的特定「循環」一樣。

(我無法找到一個答案來此基礎上奇怪的措辭,但如果有一個剛剛告訴我,我會非常樂意接受下來。)

+5

記錄你自己的'break'和'continue'。 – syam

+0

'footwo()'永遠不會執行,因爲你的for循環會在'i == 5'時退出。 – Geoffrey

+0

繼續是我正在尋找的,謝謝。我的意思是有'ifoo = foo()',見編輯 –

回答

8

使用continue

if (i < 5) 
    continue; 

這直接跳轉到循環的下一個迭代。

+0

正是我在找什麼,謝謝。 –

+0

打我吧:( – null

2

我不完全確定你的意思,但如果你檢查if (i < 5)的條件,那麼只需使用關鍵字continue。如果表達式爲真,則循環將爲continue

+0

是的,就是這樣,謝謝 –

+1

沒有概率吉姆,希望你喜歡這個編碼 – null

2

我不完全是你說的,但是爲了澄清一些術語,我想你的意思是說,當你說「循環」或「循環循環「。常用術語使得更清晰。

至於你的問題:

如果使用continue關鍵字,它可以讓你跳到下一個迭代。如果您使用關鍵字break,它將跳過整個迭代結構(完全在for循環之外)。這也適用於while報表。

+2

另外,爲了更清楚一點,'continue','while'等等被稱爲「控制結構」 – Geoffrey

+0

謝謝你,我原來有迭代,但改變了它的情況下,實際上是指整個循環(我當時不確定,不想混淆)。 –

1

您可以使用continue終止循環的當前迭代而不終止循環本身。但取決於代碼的結構,if聲明可能更清晰。

鑑於你的榜樣,你可能想:

for (int i = 0; i < 5; i++) 
{ 
    int i_foo; 

    i_foo = foo(); 
    if (i_foo >= 5) { 
     footwo(); 
    } 
} 

我假設你的意思的foo()結果分配給i_foo,不i

A continue如果您需要從一些嵌套結構的中間退出,或者如果您需要在循環的主體中提前退出並且有很多代碼將被推入if

但是在嵌套控制結構的情況下,您需要記住continue僅適用於最內部的封閉循環;沒有任何構造(除了goto)用於釋放多個嵌套循環。 break適用於最內圈封閉循環switch陳述