[問題] 運算子優先權問題

看板java作者 (Avow)時間15年前 (2010/07/16 11:56), 編輯推噓0(008)
留言8則, 6人參與, 最新討論串1/1
各位高手好~ int a=5;b=7,c; c=a++ + b++; 這樣的程式執行順序應該是 先執行c=a+b 再執行 a++, b++ 執行結果c=12 a=6 b=8 可是為什麼在java的運算子優先順序裡 放在變數 "右邊"的++ 優先順序會"高於" +(plus) 因為照這個結果來說++的優先等級應該會比較低才對吧? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.236.24 ※ 編輯: Luckypenguin 來自: 140.115.236.24 (07/16 11:57)

07/16 12:08, , 1F
請去看bytecode...
07/16 12:08, 1F

07/16 14:56, , 2F
這跟++a順序高於plus或為什麼吃飯一樣沒有為什麼 要用心記住喔
07/16 14:56, 2F
※ 編輯: Luckypenguin 來自: 140.115.236.24 (07/16 16:29)

07/16 16:30, , 3F
++a會先執行所以優先等級高這個我比較能體會
07/16 16:30, 3F

07/16 17:08, , 4F
a++比較晚執行但是為何他優先等級比+高
07/16 17:08, 4F

07/16 18:22, , 5F
++a和a++的差別也許不是在執行的早晚 而是做的動作的差別
07/16 18:22, 5F

07/16 18:49, , 6F
去看bytecode... (google javap) ...
07/16 18:49, 6F

07/16 20:42, , 7F
我瞭解了 感謝大家!
07/16 20:42, 7F

07/17 18:36, , 8F
precedence 是指 operator 與 operand 結合的順序
07/17 18:36, 8F
文章代碼(AID): #1CFzX-Av (java)