[问题] 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