[問題] i += i++ 問題

看板java作者 (jacky)時間5月前 (), 編輯推噓8(8015)
留言23則, 13人參與, 2月前最新討論串1/2 (看更多)
新手遇到一個問題 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

06/19 12:22, 5月前 , 1F
試試這個i+=++i
06/19 12:22, 1F

06/19 12:24, 5月前 , 2F
先講結論i ++是先賦值i 再++,++i 是先執行++再賦值
06/19 12:24, 2F

06/19 12:43, 5月前 , 3F
首先 = 右邊的 i++ 會先算完, 此時 i 變成 6, 但 i++ 式子
06/19 12:43, 3F

06/19 12:44, 5月前 , 4F
求得的結果是 5 (i 原先的值); 然後再運算 +=, 所以 i += 5
06/19 12:44, 4F

06/19 12:46, 5月前 , 5F
但是這條式子的 i 的值在先前處理 += 還沒到 ++ 時已經抓了
06/19 12:46, 5F

06/19 12:47, 5月前 , 6F
所以它還是會拿原值 5 跟 i++ 獲得的 5 相加得到 10
06/19 12:47, 6F

06/20 04:39, 5月前 , 7F
i+=(..)等同於i=i+(..) ,++是此line執行後才執行i=i+1
06/20 04:39, 7F

06/20 04:40, 5月前 , 8F
i += i++; 等同 i=i+i; i=i+1;
06/20 04:40, 8F

06/20 04:44, 5月前 , 9F
i += i++; 不需要糾結在這種寫法,沒人會這樣寫,這種寫
06/20 04:44, 9F

06/20 04:44, 5月前 , 10F
法只會增加維護成本
06/20 04:44, 10F

06/22 00:56, 5月前 , 11F
同意樓上 不用太執著奇怪寫法的執行結果
06/22 00:56, 11F

06/23 12:53, 5月前 , 12F
雖然是考試才會用到的東西,但不知道其實也不好。
06/23 12:53, 12F

06/23 23:59, 5月前 , 13F
會不好嗎? 既然都考試才會用到了, 少掉這一題會有什麼關係?
06/23 23:59, 13F

06/24 12:32, 5月前 , 14F
這寫法 除了這篇看到以外 上次看到應該是考證照的時候了
06/24 12:32, 14F

06/29 15:03, 5月前 , 15F
這只是坑死自己的寫法吧
06/29 15:03, 15F

07/04 12:03, 4月前 , 16F
你就想i ++ -> getAndAdd
07/04 12:03, 16F

07/04 12:03, 4月前 , 17F
++i addAndGet
07/04 12:03, 17F

07/04 12:22, 4月前 , 18F
他的不是單純的 ++
07/04 12:22, 18F

08/11 02:50, 3月前 , 19F
原來證照考試考這種哦…也太浪費生命
08/11 02:50, 19F

08/22 23:38, 3月前 , 20F
何必寫這種Code找所有人麻煩呢XD
08/22 23:38, 20F

09/16 09:16, 2月前 , 21F
這種東西就是語言規格跟編譯器實作爽就好 對開發維護者沒
09/16 09:16, 21F

09/16 09:24, 2月前 , 22F
什麼意義 取捨是可讀、好寫跟效率
09/16 09:24, 22F

09/16 21:46, 2月前 , 23F
可以延伸做是否誒理解,但不好閱讀,不建議使用
09/16 21:46, 23F
文章代碼(AID): #1YhgDEAz (java)
討論串 (同標題文章)
文章代碼(AID): #1YhgDEAz (java)