新手遇到一个问题
int i = 5;
i += i++;
跑出来是10
请问怎运作的? 为何i++最后没加1
试试这个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同意楼上 不用太执著奇怪写法的执行结果
作者:
LPH66 (-6.2598534e+18f)
2022-06-23 23:59:00会不好吗? 既然都考试才会用到了, 少掉这一题会有什么关系?
作者:
jej (晃奶大馬桶)
2022-06-24 12:32:00这写法 除了这篇看到以外 上次看到应该是考证照的时候了
作者:
pupudice (poopoodice)
2022-07-04 12:03:00你就想i ++ -> getAndAdd++i addAndGet
作者:
qrtt1 (有些事,有时候。。。)
2022-07-04 12:22: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
可以延伸做是否诶理解,但不好阅读,不建议使用