Re: [問題] while迴圈問題?

看板java作者 (sbr)時間16年前 (2009/03/08 01:21), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《macbuntu (邀怪)》之銘言: : 大部分人喜歡用 while (true) { .... } 但我比較喜歡 for (;;) { ... } : 從 Java 語法的語意上來看, 這兩種寫法其實有一點小小的不同: : while (true) 的 true 仍然是一個完整的 Java Expression, : 是要運算然後測試結果的 boolean value, 只是剛好結果永遠固定. : 而 for (;;) 的 (;;) 裡面完全沒有 Expression 需要運算, 也不需要測試. : 換句話說, 其實是要靠 compiler optimization 把 while (true) 的 true 運算省略 : 才會得到跟 for (;;) 一模一樣的結果. : 實務上, 最笨的 compiler 也會知道可以把 (true) 拿掉, 所以其實完全沒差, : 但我自己就看 for (;;) { ... } 順眼一點 :P 你的說法有道理。 但你不覺得不管從 C/C++/Java 的語法來看,for(;;) 其實蠻沒 sense 的,只能以 特例來解釋。 The Java Programming Language, 4th edition 中有提到: for (initialization-expression; loop-expression; update-expression) statement If loop-expression is left out, it is assumed to be true. 我想可以解讀成:如果沒有 loop-expression,編譯器把他當作是 true。 以這種方式來解釋 for(;;) 是正確的語法,實際上是政策考量。(為甚麼不以同樣 的方式,把 while(){...} 也訂定為正確的語法?) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.136.81 ※ 編輯: sbrhsieh 來自: 218.173.136.81 (03/08 01:22) ※ 編輯: sbrhsieh 來自: 218.173.136.81 (03/08 01:25)

03/08 02:14, , 1F
Java 在這可能只是沿用 C/C++ 語法的習慣吧?
03/08 02:14, 1F

03/08 02:36, , 2F
這就是我所謂的【政策考量】
03/08 02:36, 2F
文章代碼(AID): #19igqV-W (java)
文章代碼(AID): #19igqV-W (java)