C語言中的Do-While迴圈



do-while迴圈是C語言中最常用的迴圈型別之一。C語言中的迴圈dowhile關鍵字一起構成一個迴圈。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 loop in C

由於控制迴圈的表示式是在程式第一次執行迴圈塊後測試的,因此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迴圈的區別

whiledo-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迴圈也可用於構建條件迴圈。您還可以使用breakcontinue語句在do-while迴圈內。

c_loops.htm
廣告