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

作者: jacky0816 (jacky)   2022-06-19 12:17:16
新手遇到一個問題
int i = 5;
i += i++;
跑出來是10
請問怎運作的? 為何i++最後沒加1
作者: aidansky0989 (alta)   2022-06-19 12:22:00
試試這個i+=++i先講結論i ++是先賦值i 再++,++i 是先執行++再賦值
作者: LPH66 (-6.2598534e+18f)   2022-06-19 12:43:00
首先 = 右邊的 i++ 會先算完, 此時 i 變成 6, 但 i++ 式子求得的結果是 5 (i 原先的值); 然後再運算 +=, 所以 i += 5但是這條式子的 i 的值在先前處理 += 還沒到 ++ 時已經抓了所以它還是會拿原值 5 跟 i++ 獲得的 5 相加得到 10
作者: b9502056 (壞魯)   2022-06-20 04:39:00
i+=(..)等同於i=i+(..) ,++是此line執行後才執行i=i+1i += i++; 等同 i=i+i; i=i+1;i += i++; 不需要糾結在這種寫法,沒人會這樣寫,這種寫法只會增加維護成本
作者: gasbomb (虛空雷神獸)   2022-06-22 00:56:00
同意樓上 不用太執著奇怪寫法的執行結果
作者: gura9527 (拉拉)   2022-06-23 12:53:00
雖然是考試才會用到的東西,但不知道其實也不好。
作者: LPH66 (-6.2598534e+18f)   2022-06-23 23:59:00
會不好嗎? 既然都考試才會用到了, 少掉這一題會有什麼關係?
作者: jej (晃奶大馬桶)   2022-06-24 12:32:00
這寫法 除了這篇看到以外 上次看到應該是考證照的時候了
作者: pupuliao (pupu)   2022-06-29 15:03:00
這只是坑死自己的寫法吧
作者: pupudice (poopoodice)   2022-07-04 12:03:00
你就想i ++ -> getAndAdd++i addAndGet
作者: qrtt1 (有些事,有時候。。。)   2022-07-04 12:22:00
他的不是單純的 ++
作者: laputaflutin (很恐怖,不要問)   2022-08-11 02:50:00
原來證照考試考這種哦…也太浪費生命
作者: HMKRL (HMKRL)   2022-08-22 23:38:00
何必寫這種Code找所有人麻煩呢XD
作者: choosin (秋心)   2022-09-16 09:16:00
這種東西就是語言規格跟編譯器實作爽就好 對開發維護者沒什麼意義 取捨是可讀、好寫跟效率
作者: MonyemLi (life)   2022-09-16 21:46:00
可以延伸做是否誒理解,但不好閱讀,不建議使用

Links booklink

Contact Us: admin [ a t ] ucptt.com