2017-05-07 81 views
-2

我道歉,如果這個問題已經在Empty for loop - for(;;)或其他地方的網站上的某個地方問道。爲什麼Java for循環的空條件語句評估爲true?

我想知道如果任何人知道爲什麼Java的會選擇適合自己的解析器/編譯器在爲(;;){}循環的真正評價一個空的條件語句,而不是可能空或無效?

如由用戶@Mchi

https://developer.mozilla.org/en/JavaScript/Reference/Statements/for

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

我只是好奇。

+0

相反應該是假。不爲空或無效 – efekctive

+0

大概是因爲Java繼承了這個功能從C++繼承其從C和別人早就在1970年的凸輪起來的想法,'爲(;;)'應該是一個有限循環。 – Jesper

+1

請正確標記您的問題。 Java和Javascript是不同的語言。 –

回答

3

條件語句必須是boolean類型的,以控制循環,以完全相同的方式,一個if()while()語句內的表達式必須是boolean類型。

boolean的唯一有效值是truefalse。所以,nullvoid不適用,他們沒有任何意義。

至於空的條件語句,這兩個可能的值truefalse的,他們選擇了true因爲絕對不會需要任何一個循環,不會循環可言,雖然有很多的情況下,我們有必要爲一個循環,將循環永遠(或直到break。)

+1

對於循環構造,選擇'true'作爲默認值是有意義的。 –

+0

@HuguesMoreau沒錯,我修改了我的答案以表明這一點。 –

+0

謝謝,我猜不是 – hammeramr