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

C語言 while 迴圈完全指南:前測試迴圈的核心用法與陷阱

     編輯:關於C語言

while 迴圈是 C 語言最基礎的「前測試」迴圈:先判斷條件,為真才執行體。其簡潔語法與靈活條件判斷,使其成為不定次數迭代的首選工具。

語法與流程

while (expression) statement;

while流程圖

執行邏輯

  1. 計算 expression。
  2. 非 0(真)→ 執行 statement → 回步驟 1。
  3. 為 0(假)→ 跳出迴圈,執行後續代碼。

經典範例

範例 6-2:1 到 100 累加

#include <stdio.h>

int main(void) {
    int i = 1, sum = 0;
    while (i <= 100) {
        sum += i;
        i++;
    }
    printf("%d\n", sum);  // 5050
    return 0;
}

累加流程圖

範例 6-3:統計輸入行字符數

#include <stdio.h>

int main(void) {
    int n = 0;
    printf("請輸入一行文字: \n");
    while (getchar() != '\n') n++;
    printf("字符數: %d\n", n);
    return 0;
}

條件 getchar() != '\n' 直接在判斷中完成「讀取+比較」,極為精簡。

兩大使用重點

1. 條件表達式不限於關係/邏輯運算

任何非零標量值皆為真。例:利用遞減至 0 控制次數。

#include <stdio.h>

int main(void) {
    int a = 0, n;
    printf("輸入 n: ");
    scanf("%d", &n);
    while (n--) printf("%d ", a++ * 2);
    return 0;
}

n-- 既是條件判斷(非零繼續),又完成計數遞減;a++ * 2 等價 (a*2); a++。

2. 多語句必須用大括號

while (i < 10) {
    sum += i;
    i++;
    printf("%d\n", sum);
}

漏寫 { } 會導致只有第一句在迴圈內,其餘僅執行一次——經典 Bug 來源。

while 迴圈常見模式

模式代碼範例說明
計數器i=0; while(i<n) { ... i++; }已知次數,可改用 for
哨兵控制scanf("%d",&x); while(x!=-1) { ... scanf("%d",&x); }輸入 -1 結束
EOF 控制while((c=getchar())!=EOF) { ... }檔案/標準輸入讀取
旗標控制while(!done) { ... if(cond) done=1; }布林旗標決定結束

避坑指南

  • 分號陷阱: while (i < 10); 後面加分號 → 空語句 → 無限迴圈(若體內無副作用)。
  • 條件變數未更新: 必須在體內修改條件相關變數。
  • 優先考慮 for: 明確計數場景 for 語義更清晰。

總結

while 以「條件在前、零次可能」的特性,完美處理不定次數迭代。掌握條件表達式靈活性與大括號規則,能寫出簡潔健壯的迴圈代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved