2012-11-01 65 views
-1

可能重複:
Is 「for(;;)」 faster than 「while (TRUE)」? If not, why do people use it?(;;){}或while(true){}有什麼更好?

我想知道哪個無限循環是更優選的:

for(;;) { 
    // Do some stuff 
} 

#define TRUE 1 

while(TRUE) { 
    // Do some stuff 
} 

從性能的角度來看,他們之間有什麼不同嗎?

從編碼標準的角度來看什麼更可取?

+0

或者'while(1)'或'while(true)'如果你使用C++或者你已經包含''或者......多少個天使可以在引腳上跳舞?這是一個無法回答的問題;沒有功能上的差異,只是品味的問題。 –

+3

(我正在輸入這個答案):我更喜歡'for(;;)'的唯一原因是VC編譯器在使用'while(true)'或'while(1)'結構體時發出以下警告,而警告設置爲最高級別('W4'):'警告C4127:條件表達式爲常量「,這非常煩人,特別是當警告被視爲錯誤('WX')時。 – hmjd

+2

我不明白所有downvotes,這看起來像一個完全有效的問題。 –

回答

2

從性能的角度來看並不重要。編譯器將優化成相同的彙編代碼。從「編碼標準」的角度來看,因爲(;;)更簡潔,這很好。儘管while(TRUE)有點清晰,但是(;;)非常普遍,在這種情況下清晰並不是什麼大問題(事實上,for(;;)的普遍性可能會使其比while )。

0

沒有區別。對一些人來說,while (true)可能看起來更明顯。

0

從性能的角度來看,他們之間有什麼不同嗎?

不,無論如何。

我使用for (; ;),但其原因是異想天開的:它看起來像for (ever) …(這在C++社區中是一種成熟的習慣用法)。

0

兩者之間的差別並不大。當你知道有多少元素要穿過時,你通常會用它。你使用的時候,如果一個條件需要得到滿足

+2

這不是問題...... –

1

這是味道的問題,但特別是使用編碼慣例的問題。最好應該在同一個項目的任何地方使用一種風格,或者在混合風格時採用相同的規則。許多C++框架也提供了永遠的宏,在我看來,這應該成爲使用框架的代碼的首選。生成的代碼應該沒有區別。

+0

「許多......框架」 - 你能舉個例子嗎?我從來沒有在一個真正的框架中看到過這個。我實際上將此視爲使用框架的一個理由(無償的宏使用!) –

+0

至少Qt。此外,我也一直使用一些內部框架。在Qt中,您可以禁用它,但要避免命名空間混亂。 – hyde

相關問題