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 語言中,這類迴圈非常常見。