代碼邏輯逐步追蹤
int i, a[10];
for (i = 0; i < 10; )
a[i++] = i;
for (i = 9; i >= 0; i--)
printf("%d", a[i]);
第一個循環詳細執行
| 迭代 | 循環前 i | a[i++] = i 語義 | 賦值後 a[] | i++ 後 i | 條件檢查 |
| 1 | 0 | a[0] = 0 | a[0]=0 | 1 | 1<10 繼續 |
| 2 | 1 | a[1] = 1 | a[1]=1 | 2 | 2<10 繼續 |
| ... | ... | ... | ... | ... | ... |
| 10 | 9 | a[9] = 9 | a[9]=9 | 10 | 10<10 停止 |
陣列最終內容
a[0]=0, a[1]=1, a[2]=2, a[3]=3, a[4]=4,
a[5]=5, a[6]=6, a[7]=7, a[8]=8, a[9]=9
第二個循環輸出
for (i = 9; i >= 0; i--) printf("%d", a[i]);
// 輸出: 9876543210
關鍵點總結
a[i++] = i:先用 i 作下標存儲 i 的**當前值**,再 i++
- 等價於:
a[i] = i; i++;
- 循環條件
i < 10 在 i++ **之後** 檢查,故恰好執行 10 次
- 若寫成
a[++i] = i 則先增後用,首次存 a[1]=1,a[0] 保持 0