国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 类乌齐县| 厦门市| 晴隆县| 泰宁县| 正镶白旗| 启东市| 乌拉特前旗| 云安县| 昌邑市| 华宁县| 洪泽县| 台北市| 浦县| 资源县| 济阳县| 樟树市| 灯塔市| 哈尔滨市| 武山县| 永丰县| 瑞金市| 射阳县| 布拖县| 揭阳市| 积石山| 瓦房店市| 麟游县| 江阴市| 定襄县| 当涂县| 交口县| 大石桥市| 西丰县| 云浮市| 黔南| 改则县| 涪陵区| 武山县| 杂多县| 保德县| 海城市|