看板 java 關於我們 聯絡資訊
新手遇到一個問題 int i = 5; i += i++; 跑出來是10 請問怎運作的? 為何i++最後沒加1 -- Sent from nPTT on my iPhone 6s -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.51.106.23 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1655612238.A.2BD.html
aidansky0989: 試試這個i+=++i 06/19 12:22
aidansky0989: 先講結論i ++是先賦值i 再++,++i 是先執行++再賦值 06/19 12:24
LPH66: 首先 = 右邊的 i++ 會先算完, 此時 i 變成 6, 但 i++ 式子 06/19 12:43
LPH66: 求得的結果是 5 (i 原先的值); 然後再運算 +=, 所以 i += 5 06/19 12:44
LPH66: 但是這條式子的 i 的值在先前處理 += 還沒到 ++ 時已經抓了 06/19 12:46
LPH66: 所以它還是會拿原值 5 跟 i++ 獲得的 5 相加得到 10 06/19 12:47
b9502056: i+=(..)等同於i=i+(..) ,++是此line執行後才執行i=i+1 06/20 04:39
b9502056: i += i++; 等同 i=i+i; i=i+1; 06/20 04:40
b9502056: i += i++; 不需要糾結在這種寫法,沒人會這樣寫,這種寫 06/20 04:44
b9502056: 法只會增加維護成本 06/20 04:44
gasbomb: 同意樓上 不用太執著奇怪寫法的執行結果 06/22 00:56
gura9527: 雖然是考試才會用到的東西,但不知道其實也不好。 06/23 12:53
LPH66: 會不好嗎? 既然都考試才會用到了, 少掉這一題會有什麼關係? 06/23 23:59
jej: 這寫法 除了這篇看到以外 上次看到應該是考證照的時候了 06/24 12:32
pupuliao: 這只是坑死自己的寫法吧 06/29 15:03
pupudice: 你就想i ++ -> getAndAdd 07/04 12:03
pupudice: ++i addAndGet 07/04 12:03
qrtt1: 他的不是單純的 ++ 07/04 12:22
laputaflutin: 原來證照考試考這種哦…也太浪費生命 08/11 02:50
HMKRL: 何必寫這種Code找所有人麻煩呢XD 08/22 23:38
choosin: 這種東西就是語言規格跟編譯器實作爽就好 對開發維護者沒 09/16 09:16
choosin: 什麼意義 取捨是可讀、好寫跟效率 09/16 09:24
MonyemLi: 可以延伸做是否誒理解,但不好閱讀,不建議使用 09/16 21:46