| 表達式 | 別名 | 典型用途 | 執行次數 |
| 表達式1 | 初始化 | 循環變量賦初值 | 1 |
| 表達式2 | 循環條件 | 關系/邏輯表達式,非0繼續 | 每次迭代前 |
| 表達式3 | 迭代更新 | 自增/自減/指針移動 | 每次迭代後 |
三表達式皆可省略(分號必保留)
1. 省略初始化:外部預置
int i = 1, sum = 0;
for (; i <= 100; i++) sum += i;
2. 省略條件:死循環(需內部 break)
for (int i = 1; ; i++) sum += i; // 等價 while(1)
3. 省略迭代:循環體內手動更新
for (int i = 1; i <= 100; ) {
sum += i;
i++;
}
4. 省略 1 和 3:退化為 while
for (; i <= 100; ) { sum += i; i++; } // ≡ while(i<=100)
5. 全省略:標準死循環
for (;;) statement; // ≡ while(1) statement;
6. 表達式1可為非初始化語句
for (sum = 0; i <= 100; i++) sum += i;
7. 逗號表達式:多變量初始化/更新
for (int sum = 0, i = 1; i <= 100; i++) sum += i;
for (int i = 0, j = 100; i <= 100; i++, j--) k = i + j;
8. 條件表達式靈活:賦值、函數調用
for (int i = 0; (c = getchar()) != '\n'; i += c);
for (; (c = getchar()) != '\n'; ) printf("%c", c);
巢狀 for 循環:九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d×%d=%-2d ", j, i, i*j);
}
printf("\n");
}
常見錯誤與技巧
| 錯誤 | 正確 |
| for(i=0; i<=n; i++) 訪問 a[i] (長度 n) | i < n |
| 修改循環變量導致邏輯錯亂 | for 迭代表達式統一管理 |
| 浮點數作循環條件 | 整數計數器 + 計算浮點值 |
| 忘寫分號 | for(;;) 必須兩個分號 |
for 循環優勢總結
- 結構緊湊,三要素一目了然
- 作用域可限制在 for 內(C99
for(int i=...))
- 靈活性最高,可模擬 while、do-while、無限循環
- 編譯器優化友好(向量化、展開)
- 上一篇文章: C語言跳出循環控制:break 與 continue 精準用法、多層循環行為與對比
- 下一篇文章: C語言 while 與 do-while 循環:語法、執行流程、死循環陷阱與實戰應用
Copyright ©
程式碼之家 All Rights Reserved