
- 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語言 - 返回語句
- 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語言中的Do-While迴圈
do-while迴圈是C語言中最常用的迴圈型別之一。C語言中的迴圈。do和while關鍵字一起構成一個迴圈。do-while迴圈是出口驗證迴圈,即在執行迴圈體後檢查測試條件。而while迴圈是入口驗證的。for迴圈另一方面,是一個自動迴圈。
do while迴圈的語法
C語言中do-while迴圈的語法如下:
do { statement(s); } while(condition);
do while迴圈的工作原理?
迴圈結構以關鍵字do開頭。然後是花括號內的語句塊。while關鍵字位於右花括號之後。while前面有一個括號,其中應該是一個布林表示式。
現在讓我們瞭解while迴圈的工作原理。當C編譯器遇到do關鍵字時,程式控制進入並執行由花括號標記的程式碼塊。當到達程式碼塊的末尾時,將計算while關鍵字前的表示式。
如果表示式為真,則程式控制返回迴圈頂部。如果表示式為假,則編譯器停止返回迴圈塊的頂部,並繼續執行塊後面的下一條語句。請注意,while語句末尾有一個分號。
do while迴圈的流程圖
下圖顯示了do-while迴圈的工作原理:

由於控制迴圈的表示式是在程式第一次執行迴圈塊後測試的,因此do-while迴圈被稱為“出口驗證迴圈”。這裡需要注意的關鍵點是,do-while迴圈確保迴圈至少執行一次。
while關鍵字意味著編譯器只要表示式為真,就繼續執行隨後的塊。但是,由於條件位於迴圈結構的末尾,因此在每次迭代後(而不是像while迴圈那樣在每次迭代前)進行檢查。
程式無條件地執行其第一次迭代,然後測試條件。如果發現為真,則編譯器執行下一次迭代。一旦發現表示式為假,迴圈體將被跳過,並將執行while迴圈後的第一條語句。
讓我們嘗試透過一些示例來了解while迴圈的行為。
do while迴圈示例
下面的程式列印“Hello world”訊息五次。
#include <stdio.h> int main(){ // local variable definition int a = 1; // while loop execution do{ printf("Hello World\n"); a++; } while(a <= 5); printf("End of loop"); return 0; }
輸出
在這裡,do-while迴圈充當計數迴圈。執行程式碼並檢查其輸出:
Hello World Hello World Hello World Hello World Hello World End of loop
控制重複次數的變數“a”初始化為1。程式無條件地進入迴圈,列印訊息,將“a”加1。
當它到達迴圈末尾時,測試while語句中的條件。由於條件“a <= 5”為真,程式返回迴圈頂部並重新進入迴圈。
現在“a”為2,因此條件仍然為真,因此迴圈再次重複,並持續到條件變為假。迴圈停止重複,程式控制轉到塊後的步驟。
現在,將“a”的初始值更改為10,然後再次執行程式碼。它將產生以下輸出:
Hello World End of loop
這是因為程式無條件地進入迴圈塊。由於while關鍵字之前的條件為假,因此該塊不會下一次重複。因此,do-while迴圈至少執行一次迭代,因為測試條件位於迴圈的末尾。由於這個原因,do-while迴圈被稱為“出口驗證迴圈”。
while迴圈和do while迴圈的區別
用while和do-while構建的迴圈看起來相似。您可以輕鬆地將while迴圈轉換為do-while迴圈,反之亦然。但是,兩者之間存在一些關鍵區別。
明顯的語法差異在於do-while結構以do關鍵字開頭,以while關鍵字結尾。while迴圈不需要do關鍵字。其次,在do-while迴圈中,你在while前面找到一個分號。while迴圈中沒有分號。
示例
控制迴圈的測試條件的位置是兩者之間主要區別。測試條件位於while迴圈的開頭,而在do-while迴圈中則位於末尾。它如何影響迴圈行為?看看下面的程式碼:
#include <stdio.h> int main(){ // local variable definition int a = 0, b = 0; // while loop execution printf("Output of while loop: \n"); while(a < 5){ a++; printf("a: %d\n", a); } printf("Output of do-while loop: \n"); do{ b++; printf("b: %d\n",b); } while(b < 5); return 0; }
輸出
最初,“a”和“b”初始化為“0”,兩個迴圈的輸出相同。
Output of while loop: a: 1 a: 2 a: 3 a: 4 a: 5 Output of do-while loop: b: 1 b: 2 b: 3 b: 4 b: 5
現在將兩個變數的初始值更改為3,然後再次執行程式碼。兩個迴圈的輸出沒有變化。
Output of while loop: a: 4 a: 5 Output of do-while loop: b: 4 b: 5
現在將兩個變數的初始值更改為10,然後再次執行程式碼。在這裡,您可以觀察到兩個迴圈之間的區別:
Output of while loop: Output of do-while loop: b: 11
請注意,while迴圈沒有任何迭代,但do-while執行其主體一次。這是因為在while的情況下,迴圈條件在迴圈塊的頂部進行驗證,並且由於條件為假,程式不會進入迴圈。
在do-while中,程式無條件地進入迴圈,將“b”遞增到11,然後由於條件為假而不再重複。這表明do-while保證至少重複一次,而不管迴圈變數的初始值如何。
do-while迴圈也可用於構建條件迴圈。您還可以使用break和continue語句在do-while迴圈內。