這是兩者最本質的區別,決定了迴圈主體「至少執行一次」的可能性。
while (條件表達式) {
迴圈主體語句;
}
do {
迴圈主體語句;
} while (條件表達式);
| 項目 | while | do-while |
|---|---|---|
| 關鍵字位置 | 迴圈開始處 | 迴圈結束處 |
| 分號結尾 | 無 (大括號結束) | 有 (while(...); 必須加分號) |
| 最小執行次數 | 0 次 | 1 次 |
| 條件為真意義 | 繼續執行 | 繼續執行 |
while(fgets(buf, n, fp) != NULL))。int input;
do {
printf("請輸入 1-10 之間的整數: ");
scanf("%d", &input);
if (input < 1 || input > 10) {
printf("輸入錯誤,請重新輸入!\n");
}
} while (input < 1 || input > 10); // 至少跑一次,錯誤則繼續
printf("您輸入的是: %d\n", input);
若改用 while,需在迴圈前額外寫一次 scanf,造成程式碼重複。
while 是「防衛性」迴圈,適合不確定性場景;do-while 是「保證性」迴圈,適合必須先執行再驗證的場景。掌握「判斷時機」差異,即可靈活選用。