C語言提供了三種迴圈執行的方式:for迴圈while迴圈do while迴圈。它們都可以用來迭代陣列,但有一些差異。讓我們詳細看看它們。

for迴圈

第一種,也是最常見的一種迴圈是for迴圈

使用 for 關鍵字可以在開始時定義迴圈的規則,並提供重複執行的程式區塊。

像這樣:

for (int i = 0; i <= 10; i++) {
 /* 重複執行的指令 */
}

(int i = 0; i <= 10; i++) 區塊包含迴圈的三個部分:

  • 初始條件 (int i = 0)
  • 測試 (i <= 10)
  • 增量 (i++)

我們首先定義一個迴圈變數,這個例子中命名為 i。在迴圈中,i 是常見的迴圈變數名稱,與巢狀迴圈(迴圈內部的迴圈)時使用的 j 一起。這只是一種約定俗成的寫法。

這個變數從值 0 開始初始化,並執行第一次迴圈。然後根據增量部分的設定進行遞增(在這個例子中是 i++,按 1 遞增),直到達到數字 10。

在迴圈的主要程式區塊中,我們可以存取變數 i 來得知迴圈的執行次數。這個程式應該輸出 0 1 2 3 4 5 5 6 7 8 9 10

for (int i = 0; i <= 10; i++) {
 /* 重複執行的指令 */
 printf("%u ", i);
}

迴圈也可以從一個大數字開始,結束於一個較小的數字,像這樣:

for (int i = 10; i > 0; i--) {
 /* 重複執行的指令 */
}

你也可以以2或其他數值遞增迴圈變數:

for (int i = 0; i < 1000; i = i + 30) {
 /* 重複執行的指令 */
}

while迴圈

while迴圈for 迴圈更簡單,因為它在你的部分需要更多工作。

for 迴圈不同,在 while 迴圈中,你只需檢查條件:

while (i < 10) {

}

這裡假設 i 已經定義並初始化了一個值。

如果你不在迴圈內部的某個地方對 i 變數進行增量運算,則這個迴圈將成為無限迴圈。無限迴圈很糟糕,因為它將阻塞程式,除此之外什麼事都不會發生。

這是一個“正確”的 while 迴圈的寫法:

int i = 0;

while (i < 10) {
 /* 做些什麼 */

 i++;
}

這裡有一個例外,稍後我們會看到它。在此之前,讓我們介紹 do while 迴圈。

do while迴圈

雖然 while 迴圈很棒,但有時候你可能需要做一件特殊的事情:即始終執行一個程式區塊,然後可能重複執行該程式區塊。

這可以使用 do while 關鍵字實現,它與 while 迴圈非常相似,但略有不同:

int i = 0;

do {
 /* 做些什麼 */

 i++;
} while (i < 10);

包含 /* 做些什麼 */ 註解的程式區塊始終會執行至少一次,不論底部的條件檢查結果如何。

然後,只要 i 小於 10,就會重複執行該程式區塊。

使用 break 關鍵字中斷迴圈

在所有的 C 迴圈中,我們都可以在任何時候立即中斷迴圈。這是使用 break 關鍵字實現的。

這在許多情況下都很有用。例如,你可能想要檢查變量的值:

for (int i = 0; i <= 10; i++) {
 if (i == 4 && someVariable == 10) {
 break;
 }
}

while 迴圈(和 do while 迴圈)中,有這種中斷迴圈的選項特別有趣,因為我們可以創建看似無限的迴圈,當條件發生時結束迴圈,而這個條件可以在迴圈內的程式區塊中定義:

int i = 0;
while (1) {
 /* 做些什麼 */

 i++;
 if (i == 10) break;
}

在 C 語言中,這類迴圈非常常見。