[問題] 未定義行為?

看板java作者 (某數..失業中)時間12年前 (2011/10/26 14:03), 編輯推噓5(505)
留言10則, 6人參與, 最新討論串1/2 (看更多)
在同一式子裡對變數超過一次的賦值 在java裡算是未定義行為嗎 如果不算的話 編譯後運算的順序是? 我在網路上查到java的作法是開一塊記憶體作暫存 那以我下面的這兩題來說 三個變數都同樣指向同一塊記憶體位置嗎 運算的順序是由左往右結合嗎 附上兩題我很想吐槽的題目... 請問以下程式的輸出為何 int a=85; if (a++==85 && ++a==86 && --a==85) System.out.print(a); else System.out.print(a); int a = 5; a = (a++) + (a++) + (++a); System.out.println("a="+a); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.17.20.100

10/26 14:30, , 1F
我記得 java 好像有規定這種東西的運算順序...要去翻 JLS 了
10/26 14:30, 1F

10/26 14:32, , 2F
run 一下不就有結論了嗎 ?
10/26 14:32, 2F

10/26 14:40, , 3F
所以...這算不算未定義行為
10/26 14:40, 3F

10/26 14:45, , 4F
之前聽過這種題目的最中肯解答: 他媽的把這種敘述句給拆開
10/26 14:45, 4F

10/26 14:46, , 5F
不算 你run它一千萬次 每次滾出來的數字都一模一樣y
10/26 14:46, 5F

10/26 14:47, , 6F
這不能當理由吧 處理方式是編譯器決定 當然都一樣啊
10/26 14:47, 6F

10/26 14:53, , 7F
未定義行為 可各出怪招 你說會大漲 它卻崩盤y
10/26 14:53, 7F

10/26 19:31, , 8F
不要去研究這種寫法 太浪費生命了 正常人也不會這樣寫
10/26 19:31, 8F
我完全不想研究 寫過成千上萬行的code從來沒用過這種用法 可是該死的死大一遇到必修的基礎程式設計還是拿教授沒轍阿( ′-`)y-~

10/26 20:55, , 9F
Wiki上, 有未定義行為的條目可以參考 http://0rz.tw/3l4o9
10/26 20:55, 9F

10/26 21:02, , 10F
有人討論java的未定義行為 http://0rz.tw/GQppr
10/26 21:02, 10F
※ 編輯: x000032001 來自: 219.87.178.100 (10/26 21:34)
文章代碼(AID): #1EfwARLl (java)
討論串 (同標題文章)
文章代碼(AID): #1EfwARLl (java)