
- C語言程式設計教程
- C語言 - 首頁
- C語言基礎
- C語言 - 概述
- C語言 - 特性
- C語言 - 歷史
- C語言 - 環境搭建
- C語言 - 程式結構
- C語言 - Hello World
- C語言 - 編譯過程
- C語言 - 註釋
- C語言 - 詞法單元
- C語言 - 關鍵字
- C語言 - 識別符號
- C語言 - 使用者輸入
- C語言 - 基本語法
- C語言 - 資料型別
- C語言 - 變數
- C語言 - 整型提升
- C語言 - 型別轉換
- C語言 - 型別強制轉換
- C語言 - 布林值
- C語言中的常量和字面量
- C語言 - 常量
- C語言 - 字面量
- C語言 - 轉義序列
- C語言 - 格式說明符
- C語言中的運算子
- C語言 - 運算子
- C語言 - 算術運算子
- C語言 - 關係運算符
- C語言 - 邏輯運算子
- C語言 - 位運算子
- C語言 - 賦值運算子
- C語言 - 一元運算子
- C語言 - 自增和自減運算子
- C語言 - 三元運算子
- C語言 - sizeof 運算子
- C語言 - 運算子優先順序
- C語言 - 其他運算子
- C語言中的決策
- C語言 - 決策
- C語言 - if 語句
- C語言 - if...else 語句
- C語言 - 巢狀 if 語句
- C語言 - switch 語句
- C語言 - 巢狀 switch 語句
- C語言中的迴圈
- C語言 - 迴圈
- C語言 - while 迴圈
- C語言 - for 迴圈
- C語言 - do...while 迴圈
- C語言 - 巢狀迴圈
- C語言 - 無限迴圈
- C語言 - break 語句
- C語言 - continue 語句
- C語言 - goto 語句
- C語言中的函式
- C語言 - 函式
- C語言 - 主函式
- C語言 - 按值呼叫函式
- C語言 - 按引用呼叫函式
- C語言 - 巢狀函式
- C語言 - 變參函式
- C語言 - 使用者自定義函式
- C語言 - 回撥函式
- C語言 - return 語句
- C語言 - 遞迴
- C語言中的作用域規則
- C語言 - 作用域規則
- C語言 - 靜態變數
- C語言 - 全域性變數
- C語言中的陣列
- C語言 - 陣列
- C語言 - 陣列的特性
- C語言 - 多維陣列
- C語言 - 將陣列傳遞給函式
- C語言 - 從函式返回陣列
- C語言 - 變長陣列
- C語言中的指標
- C語言 - 指標
- C語言 - 指標和陣列
- C語言 - 指標的應用
- C語言 - 指標運算
- C語言 - 指標陣列
- C語言 - 指向指標的指標
- C語言 - 將指標傳遞給函式
- C語言 - 從函式返回指標
- C語言 - 函式指標
- C語言 - 指向陣列的指標
- C語言 - 指向結構體的指標
- C語言 - 指標鏈
- C語言 - 指標與陣列
- C語言 - 字元指標和函式
- C語言 - 空指標
- C語言 - void 指標
- C語言 - 懸空指標
- C語言 - 解引用指標
- C語言 - 近指標、遠指標和巨型指標
- C語言 - 指標陣列的初始化
- C語言 - 指標與多維陣列
- C語言中的字串
- C語言 - 字串
- C語言 - 字串陣列
- C語言 - 特殊字元
- C語言結構體和聯合體
- C語言 - 結構體
- C語言 - 結構體和函式
- C語言 - 結構體陣列
- C語言 - 自引用結構體
- C語言 - 查詢表
- C語言 - 點 (.) 運算子
- C語言 - 列舉 (enum)
- C語言 - 結構體填充和打包
- C語言 - 巢狀結構體
- C語言 - 匿名結構體和聯合體
- C語言 - 聯合體
- C語言 - 位域
- C語言 - typedef
- C語言中的檔案處理
- C語言 - 輸入 & 輸出
- C語言 - 檔案 I/O (檔案處理)
- C語言預處理器
- C語言 - 預處理器
- C語言 - 預處理指令
- C語言 - 預處理器運算子
- C語言 - 宏
- C語言 - 標頭檔案
- C語言中的記憶體管理
- C語言 - 記憶體管理
- C語言 - 記憶體地址
- C語言 - 儲存類別
- 其他主題
- C語言 - 錯誤處理
- C語言 - 可變引數
- C語言 - 命令執行
- C語言 - 數學函式
- C語言 - static 關鍵字
- C語言 - 隨機數生成
- C語言 - 命令列引數
- C語言程式設計資源
- C語言 - 問答
- C語言 - 快速指南
- C語言 - 速查表
- C語言 - 有用資源
- C語言 - 討論
C語言 - while迴圈
在C語言中,while 是一個用於構成迴圈的關鍵字。while 迴圈是C語言中最常用的迴圈型別之一。C語言中的迴圈。C語言中的其他迴圈關鍵字是 for 和 do-while。
while 迴圈通常被稱為入口驗證迴圈,而do-while 迴圈是出口驗證迴圈。for 迴圈則是一個自動迴圈。
C語言while迴圈的語法
構建while 迴圈的語法如下:
while(expression){ statement(s); }
while 關鍵字後面跟著一個括號,其中應該包含一個布林表示式。括號後面是用花括號括起來的一段語句塊。
C語言while迴圈的流程圖
下面的流程圖表示while 迴圈的工作方式:

while迴圈在C語言中如何工作?
C編譯器 會評估表示式。如果表示式為真,則會執行其後的程式碼塊。如果表示式為假,編譯器會忽略while 關鍵字後面的程式碼塊,並繼續執行程式碼塊後面的下一條語句。
由於控制迴圈的表示式是在程式進入迴圈之前進行測試的,因此while 迴圈被稱為入口驗證迴圈。這裡需要注意的關鍵點是,如果條件在第一次就發現為假,則while 迴圈可能根本不會執行。
while 關鍵字意味著編譯器會持續執行後續程式碼塊,直到表示式為假。條件位於迴圈結構的頂部。每次迭代後,都會測試條件。如果發現為真,編譯器會執行下一次迭代。一旦表示式被發現為假,迴圈體將被跳過,並且將執行while迴圈後的第一條語句。
C語言while迴圈的示例
下面的程式列印“Hello World”訊息五次。
#include <stdio.h> int main(){ // local variable definition int a = 1; // while loop execution while(a <= 5){ printf("Hello World \n"); a++; } printf("End of loop"); return 0; }
輸出
在這裡,while 迴圈充當計數迴圈。執行程式碼並檢查其輸出:
Hello World Hello World Hello World Hello World Hello World End of loop
示例解釋
在while 語句之前,控制重複次數的變數“a”被初始化為1。由於條件“a <= 5”為真,程式進入迴圈,列印訊息,將“a”加1,然後返回到迴圈頂部。
在下一次迭代中,“a”為2,因此條件仍然為真,因此迴圈再次重複,並持續到條件變為假。迴圈停止重複,程式控制轉到程式碼塊之後的步驟。
現在,將“a”的初始值更改為10,然後再次執行程式碼。現在輸出將顯示以下內容:
End of loop
這是因為while 關鍵字之前的條件在第一次迭代中就為假,因此程式碼塊沒有重複執行。
“char”變量表示與其ASCII值對應的字元。因此,它可以遞增。因此,我們將變數的值從“a”遞增到“z”。
將while用作條件迴圈
您可以將while迴圈用作條件迴圈,其中迴圈將一直執行到滿足給定條件為止。
示例
在這個例子中,while 迴圈用作條件迴圈。迴圈會一直重複,直到接收到的輸入是非負數。
#include <stdio.h> int main(){ // local variable definition char choice = 'a'; int x = 0; // while loop execution while(x >= 0){ (x % 2 == 0) ? printf("%d is Even \n", x) : printf("%d is Odd \n", x); printf("\n Enter a positive number: "); scanf("%d", &x); } printf("\n End of loop"); return 0; }
輸出
執行程式碼並檢查其輸出:
0 is Even Enter a positive number: 12 12 is Even Enter a positive number: 25 25 is Odd Enter a positive number: -1 End of loop
帶有break和continue的while迴圈
在以上所有示例中,while 迴圈的設計目的是重複多次,或者直到找到某個特定條件。C語言有break 和 continue 語句來控制迴圈。這些關鍵字可以在while 迴圈內使用。
示例
break 語句導致迴圈終止:
while (expr){ . . . . . . if (condition) break; . . . }
示例
continue 語句使迴圈從開頭重複:
while (expr){ . . . . . . if (condition) continue; . . . }
更多C語言while迴圈示例
示例:列印小寫字母
下面的程式使用while 迴圈列印所有小寫字母。
#include <stdio.h> int main(){ // local variable definition char a = 'a'; // while loop execution while(a <= 'z') { printf("%c", a); a++; } printf("\n End of loop"); return 0; }
輸出
執行程式碼並檢查其輸出:
abcdefghijklmnopqrstuvwxyz End of loop
示例:使兩個變數相等
在下面給出的程式碼中,我們有兩個變數“a”和“b”,分別初始化為10和0。在迴圈中,“b”遞減,“a”在每次迭代中遞增。迴圈設計為重複執行,直到“a”和“b”不相等。當兩者都達到5時,迴圈結束。
#include <stdio.h> int main(){ // local variable definition int a = 10, b = 0; // while loop execution while(a != b){ a--; b++; printf("a: %d b: %d\n", a,b); } printf("\n End of loop"); return 0; }
輸出
執行此程式碼時,將產生以下輸出:
a: 9 b: 1 a: 8 b: 2 a: 7 b: 3 a: 6 b: 4 a: 5 b: 5 End of loop
while迴圈與do while迴圈
do-while 迴圈在大多數情況下與while 迴圈類似,儘管它們的語法有所不同。do-while 迴圈被稱為出口驗證迴圈。在某些情況下,它們的行為是不同的。while 和 do-while 迴圈之間的區別在本教程的do-while 章節中進行了解釋。