2013-05-30 31 views

回答

9

它的 「死循環」,它工作在C,C++,C#,Java的等同樣你已經有了一個for語句

  • 沒有初始步驟
  • 沒有終止檢查(=>永遠持續下去)
  • 結束的循環中沒有一步
4

這是一個無限循環,就像while(true)

2

在許多語言中的簡單/空;作爲一個空白,但真(和可執行)語句。

因此,在for循環中,所有三個表達式都是真的,總是匹配的,因此導致無限循環。


它也已在Wikipedia。按照維基頁面

這種風格是用來代替無限循環while(1)避免Visual C++一個 警告。


一個if語句或while環路的控制表達式的計算結果爲一個常數。如果while循環的控制表達式是一個常量,因爲循環將在中間退出,請考慮用for循環替換while循環。您可以省略循環的初始化,終止測試和循環增量,這會導致循環成爲無限循環(如while(1)),您可以從for語句的主體中退出循環。

+0

'for'循環沒有「三個條件」 – Ian

+1

@Ian表達式:) – hjpotter92

0

它運行一個無限循環,因爲

從本質上講,一個for循環是另一種循環的縮短版,與此語法

for(a;b;c){ 
} 

a; 
while(b){ 

c; 
} 

如此循環不止,因爲b是空的,並且它沒有增加運算符來改變任何東西。基本上,它是虛無的無限循環。 編輯:顯然,空命令評估爲true。

+0

這是不完全正確的。如果'for'循環在你的例子中以while循環的形式運行,則不會執行任何內容。 'b'將會是'undefined',這將是錯誤的,並且身體永遠不會執行。這是一種讓'for(;;)'執行類似'while(true)'循環的語言的怪癖。 – zzzzBov

+0

另外,我假設你的意思是寫'for(a; b; c)'而不是逗號。 – zzzzBov

+0

@zzzzBov yup,我的不好 – scrblnrd3

3

正如其他人已經指出的那樣,如果將永遠運行下去,但你仍然可以結束循環與break。像:

for (;;) { 
    if (condition) { 
     break; 
    } 
} 

Mozilla 擁有的JavaScript如何評估for循環良好的細分:

for ([initialization]; [condition]; [final-expression]) 
    statement 

初始化
的表達式(包括賦值表達式)或變量聲明。通常用於初始化計數器變量。這個 表達式可以有選擇地用var關鍵字聲明新的變量。 這些變量對於循環來說不是本地的,即它們與for循環所在的範圍相同。將丟棄該表達式的結果。

條件
的表達式以每次循環迭代之前進行評估。如果此表達式的計算結果爲true,則執行語句。此條件 測試是可選的。如果省略,則條件始終爲真。 如果表達式的計算結果爲false,則執行跳轉到for結構之後的第一個 表達式。

final-expression
在每次循環迭代結束時要評估的表達式。這發生在下一次條件評估之前。一般用於 更新或增加計數器變量。

statement
只要條件評估爲true就執行的語句。要在循環中執行多個語句,請使用 語句塊({...})對這些語句進行分組。

最爲相關的這個問題是在條件部分:

此條件測試是可選的。如果省略,條件總是 評估爲true。

+1

你可以*並且應該*用'break'結束循環;-) – bdesham

+0

@bdesham是的,你應該! – 2013-05-30 18:17:06

相關問題