首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java i++ 與 ++i 差異詳解:循環變數最終值計算

     編輯:程式設計疑難解答

題目代碼

int i = 0, j = 0;
while (i < 5) {
    j += i++;
}
System.out.println("i=" + i + ", j=" + j);

題目截圖

執行過程逐步追蹤

迴圈次數i (迴圈前)j (迴圈前)i++ 取值j += 值i (迴圈後)j (迴圈後)
10000+0=010
21010+1=121
32121+2=333
43333+3=646
54646+4=10510
結束510--510

結果

i = 5, j = 10

核心規則:++ 位置決定「先用後增」還是「先增後用」

運算子名稱語義範例
i++後置遞增先取值參與運算,再遞增int a=5; b=a++; // b=5, a=6
++i前置遞增先遞增,再取值參與運算int a=5; b=++a; // b=6, a=6
i--後置遞減先取值,再遞減int a=5; b=a--; // b=5, a=4
--i前置遞減先遞減,再取值int a=5; b=--a; // b=4, a=4

等價轉換

// 後置:j += i++;
int temp = i;
j += temp;
i = temp + 1;

// 前置:j += ++i;
i = i + 1;
j += i;

常見陷阱場景

// 1. 陣列索引
arr[i++] = val;  // 正確:用舊索引存值,索引自動移下一位
arr[++i] = val;  // 危險:先移動索引,可能越界

// 2. 循環條件
while (i++ < 5) { } // i 最終為 6
while (++i < 5) { } // i 最終為 5

// 3. 複合表達式
int x = 5;
int y = x++ + ++x; // 未定義行為 (C/C++) / 左到右求值 (Java: y=5+7=12, x=7)

最佳實務建議

  • 獨立語句中 i++、++i 效果相同,建議統一用 i++ (慣例)
  • 複合表達式中避免混用,拆分為多行提高可讀性
  • 循環變數更新放在 for 第三欄位:for (int i=0; i<n; i++)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved