看板 java 關於我們 聯絡資訊
※ 引述《st84514 (綜合水果武士)》之銘言: : int z=-1; : System.out.println(++z); : System.out.println(z--); : System.out.println(z++ + z); : System.out.println(z + z++); : 從上面程式來看輸出會為0 0 -1 0 : 小弟不懂的是第三行輸出為啥是-1?第二行輸出結束後z=-1 : 到第三行不是先把-1+-1=-2輸出後再把z+1嗎? : 那這樣最後一行輸出又怎會是0??? : 有請高手指導!謝謝! 根據 JLS 15.7.1 http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.7.1 那個 加 的左邊會先完全做完再做右邊 所以是 z++ (將 z 設為 0 且回傳 -1) 做完後再取右邊的 z (取得 0) 因此這個 + 做了 -1 + 0 故輸出 -1 此時 z 為 0 第四行也一樣 左邊的 z 先取完 (取得 0) 後再做右邊的 z++ (將 z 設為 1 且回傳 0) 因此這個 + 做了 0 + 0 故輸出 0 此時 z 為 1 -- 同一個問題丟去 C_and_CPP 版會有很多人跟你說很恐怖不要這樣做...XD 因為 C/C++ 的確沒有定義這種式子會怎麼算 而 Java 在上面那一節有定義了而已 不過說起來我個人依然不推薦這種寫法 徒增困擾而已 -- "LPH" is for "Let Program Heal us".... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.28.92 ※ 編輯: LPH66 來自: 140.112.28.92 (12/13 11:30) ※ 編輯: LPH66 來自: 140.112.28.92 (12/13 11:31)
a1234957:很多老師會拿這個來考試喔 很酷喔 12/13 23:44
a1234957:印象中GCC和vs6 不一樣XD 12/13 23:46
gozha:我念成Leave Programming Hell... 12/16 11:21