2013-04-16 112 views
2

最近同時通過C++教程去我遇到了一個for循環是這樣的:for(;;)這是一個無限循環嗎?

for (;;){ 
    //Do stuff 
} 

這是一個無限循環?爲什麼我會用這個而不是while(1)

+3

是的。使用你最喜歡的那個。 – jrok

+0

是的。沒有理由使用它而不是'while(1)'或'while(true)':偏好的問題。但是按照我的口味:'for(;;)'很醜。 –

+4

'((...;)'顯然是更好的風格。 – john

回答

8

是的,它是無限的。傳統上,編譯器在使用while(1)時會生成警告,但在使用for(;;)時不會生成警告。我不知道這是否仍然如此。

+0

MSVC仍然在足夠高的警告級別 –

3

這是一個無限循環嗎?

是。

爲什麼我會用這個而不是while(1)

由於(壞,IMO)的味道。順便說一句,如果我真的要創建一個無限循環,我會去while (true)

+0

真正的程序員使用'goto'來處理這些循環,另一個'goto'(或'return')來退出它們。 :) –

+2

@LeeMeador:真正的程序員不使用'goto';) –

+3

+1。 -1爲缺少幽默感。 –

5

這是一個無限循環。更準確地說,如果for中的條件爲空,則它被認爲是true。至於while (true)for (;;):歷史上for (;;)是慣用形式(由Kernighan和Ritchie使用),也許部分原因是因爲早期的C沒有布爾值。使用while (1)不會在我工作的任何地方通過代碼審查。使用布爾值,while (true)顯然比for (;;)更直觀,但while (1)令人困惑。但在預布爾時間中,每個人都有#define,trueTRUE或其他類似的,所以這是一個弱論證。最後,如果你是一位老C程序員,就像我一樣,最初從Kernighan和Ritchie那裏學習過,你只是本能地使用for (;;)。否則......這可能取決於你從哪裏學習了C++。

當然,在工作時,你遵循房屋慣例,他們是什麼。