2012-11-24 34 views

回答

5

它們產生相同的代碼。有幾個原因可能會更喜歡for (;;)原因,但它是所有隻是個人喜好:

  1. 一些編譯器會警告你總是爲真條件。 for(;;)不會有這個問題。

  2. for (;;)逐字讀作「永遠只是循環!」,而while (true)仍然出現有某種條件。

我說挑一個,堅持下去。只要不擅自在它們之間切換,這並不重要。

+1

個人觀點,但'for(;;)'從字面上看是壞的形式,而'while(真)'的字面意思是「Just loop forever!」它們在編譯器生成的行爲和彙編代碼中完全相同。 –

+0

@DavidHammen準確地說!我只是給出了「for(;;)」可能更常見的原因。 –

3

這兩者是相同的,很可能會導致相同的機器碼。選擇一個是個人喜好的問題。

+0

不完全正確。它們(可以說)在效果上是相同的,但並不完全表達在意義上:一個包含「條件」,另一個不包含。 – stakx

+0

@stakx:它們都包含條件:一個永遠是真的,另一個永遠是真的。 – NPE

4

這是的形式永遠循環,Kernighan and Ritchie used in their book*。絕對沒有其他理由更喜歡一種形式。

*第3.5節的While和For循環中,示例四。

+0

小1個字。 [Go](http://golang.org/doc/effective_go.html#for)甚至沒有while循環,所以Go程序員更容易理解? – tjameson

2

這並不重要 - 它只是個人偏好。

我喜歡for(;;)更好,因爲我認爲它強調永遠循環方面。

+0

我認爲'while(true)'看起來像是一個永遠是'真'的條件。 :-) –