国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

警惕自增的陷阱

2019-11-11 07:26:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
public static void main(String[] args) { int count =0; for(int i=0;i<10;i++){ count=count++; } System.out.PRintln("count="+count); }       運(yùn)行結(jié)果是 count 等于 0。 為什么呢?       count++ 是一個(gè)表達(dá)式, 是有返回值的, 它的返回值就是 count 自加前的值, java 對(duì)自加是這樣處理的 : 首先把 count 的值( 注意是值, 不是引用) 拷貝到一個(gè)臨時(shí)變量區(qū), 然后對(duì) count 變量加 1, 最后返回臨時(shí)變量區(qū)的值。 程序第一次循環(huán)時(shí)的詳細(xì)處理步驟如下:      步驟 1 JVM 把 count 值( 其值是 0) 拷貝到臨時(shí)變量區(qū)。      步驟 2 count 值加 1, 這時(shí)候 count 的值是 1。      步驟 3 返回臨時(shí)變量區(qū)的值, 注意這個(gè)值是 0, 沒(méi)修改過(guò)。      步驟 4 返回值賦值給 count, 此時(shí) count 值被重置成 0?!癱ount=count++”這條語(yǔ)句可以按照如下代碼來(lái)理解:public static int mockAdd(int count){ // 先保存初始值 int temp =count; // 做自增操作 count = count+1; // 返回原始值 return temp;}      于是第一次循環(huán)后 count 的值還是 0, 其他 9 次的循環(huán)也是一樣的, 最終你會(huì)發(fā)現(xiàn) count的值始終沒(méi)有改變, 仍然保持著最初的狀態(tài)。     解 決 方 法 很 簡(jiǎn) 單, 只 要 把“count=count++” 修 改 為“count++” 即 可。 該 問(wèn) 題 在 不 同 的 語(yǔ) 言 環(huán) 境 有 不 同 的 實(shí) 現(xiàn) : C++ 中“count=count++” 與“count++”是等效的, 而在 php 中則保持著與 Java 相同的處理方式。 每種語(yǔ)言對(duì)自增的實(shí)現(xiàn)方式各不同, 讀者有興趣可以多找?guī)追N語(yǔ)言測(cè)試一下, 思考一下原理。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 信宜市| 涞水县| 宜宾市| 临邑县| 聊城市| 富裕县| 饶阳县| 永登县| 康保县| 东乡族自治县| 石城县| 南投县| 怀来县| 乌拉特中旗| 宜君县| 扎鲁特旗| 青河县| 深泽县| 卫辉市| 阿克苏市| 威海市| 内乡县| 乌海市| 渭南市| 光山县| 吉林市| 三原县| 科尔| 寻甸| 股票| 汝州市| 英山县| 中山市| 牟定县| 炎陵县| 漠河县| 吴旗县| 衡东县| 北京市| 邯郸县| 白城市|