首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言 for 迴圈完全指南:語法、變體、巢狀與進階技巧

     編輯:關於C語言

for 迴圈是 C 語言中功能最強大、使用頻率最高的迴圈結構。本文從基本語法到進階變體、巢狀應用,系統整理 for 迴圈的完整知識體系。

標準語法與執行流程

for (expr1; expr2; expr3) statement;

四步驟執行機制

  1. 初始化: 執行 expr1(僅一次)。
  2. 條件判斷: 計算 expr2,非 0(真)進入迴圈體,為 0(假)結束迴圈。
  3. 執行體: 執行 statement(單句或複合語句)。
  4. 更新: 執行 expr3,回步驟 2。

for迴圈流程圖

最常見形式:計數器迴圈

for (i = 1; i <= 100; i++) sum += i;

等價 while 寫法:

i = 1;
while (i <= 100) {
    sum += i;
    i++;
}

九大進階用法與注意事項

1. 三大表達式皆可省略(但分號不可省)

for ( ; ; ) statement;  // 無限迴圈,等價 while(1)

2. 省略 expr1:外部初始化

i = 1;
for ( ; i <= 100; i++) sum += i;

3. 省略 expr2:須在體內用 break 跳出,否則死循環

for (i = 1; ; i++) {
    sum += i;
    if (i == 100) break;
}

4. 省略 expr3:在體內手動更新

for (i = 1; i <= 100; ) {
    sum += i;
    i++;
}

5. 同時省略 expr1、expr3:退化為 while

for ( ; i <= 100; ) { ... }

6. expr1 可為任意表達式(含多重初始化)

for (sum = 0, i = 1; i <= 100; i++) sum += i;

7. expr1、expr3 支援逗號運算子,多變數並行控制

for (i = 0, j = 100; i <= 100; i++, j--) k = i + j;

8. expr2 可為任意標量表達式,非零即真

for (i = 0; (c = getchar()) != '\n'; i += c);  // 累加字符 ASCII 值

9. 空迴圈體:分號即為空語句

for ( ; (c = getchar()) != '\n'; ) printf("%c", c);

巢狀迴圈:多維度遍歷利器

範例 6-7:三層巢狀列印 0/1 組合

#include <stdio.h>

int main(void) {
    int i, j, k;
    printf("i j k\n");
    for (i = 0; i < 2; i++)
        for (j = 0; j < 2; j++)
            for (k = 0; k < 2; k++)
                printf("%d %d %d\n", i, j, k);
    return 0;
}

輸出 8 行(2³)二進制組合。巢狀層數建議不超過 3 層,過深應重構。

最佳實踐總結

  • 優先使用標準計數器形式,語義最清晰。
  • 善用逗號運算子整合相關變數初始化/更新。
  • 避免在迴圈體內修改控制變數(除非 expr3 省略時)。
  • 巢狀迴圈內層若為簡單操作,可省略大括號;複雜邏輯必加大括號。
  • 無限迴圈明確寫 for(;;) 或 while(1),體內必有 break/return。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved