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

首頁 > 學院 > 開發設計 > 正文

警惕自增的陷阱

2019-11-14 09:18:58
字體:
來源:轉載
供稿:網友
public static void main(String[] args) { int count =0; for(int i=0;i<10;i++){ count=count++; } System.out.PRintln("count="+count); }       運行結果是 count 等于 0。 為什么呢?       count++ 是一個表達式, 是有返回值的, 它的返回值就是 count 自加前的值, java 對自加是這樣處理的 : 首先把 count 的值( 注意是值, 不是引用) 拷貝到一個臨時變量區, 然后對 count 變量加 1, 最后返回臨時變量區的值。 程序第一次循環時的詳細處理步驟如下:      步驟 1 JVM 把 count 值( 其值是 0) 拷貝到臨時變量區。      步驟 2 count 值加 1, 這時候 count 的值是 1。      步驟 3 返回臨時變量區的值, 注意這個值是 0, 沒修改過。      步驟 4 返回值賦值給 count, 此時 count 值被重置成 0。“count=count++”這條語句可以按照如下代碼來理解:public static int mockAdd(int count){ // 先保存初始值 int temp =count; // 做自增操作 count = count+1; // 返回原始值 return temp;}      于是第一次循環后 count 的值還是 0, 其他 9 次的循環也是一樣的, 最終你會發現 count的值始終沒有改變, 仍然保持著最初的狀態。     解 決 方 法 很 簡 單, 只 要 把“count=count++” 修 改 為“count++” 即 可。 該 問 題 在 不 同 的 語 言 環 境 有 不 同 的 實 現 : C++ 中“count=count++” 與“count++”是等效的, 而在 php 中則保持著與 Java 相同的處理方式。 每種語言對自增的實現方式各不同, 讀者有興趣可以多找幾種語言測試一下, 思考一下原理。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉兴市| 青田县| 修文县| 双流县| 天气| 三都| 织金县| 彩票| 汉中市| 克什克腾旗| 祁门县| 临城县| 蕉岭县| 金山区| 通河县| 登封市| 韶山市| 漯河市| 绍兴市| 玉树县| 剑川县| 焉耆| 九江县| 云南省| 黄陵县| 浮山县| 湄潭县| 渝中区| 永善县| 永和县| 南溪县| 宣武区| 大庆市| 岳池县| 巩义市| 洛浦县| 乌海市| 芜湖市| 昌都县| 象山县| 甘泉县|