Re: [問題] while迴圈問題?
※ 引述《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
03/08 02:14, 1F
→
03/08 02:36, , 2F
03/08 02:36, 2F
討論串 (同標題文章)