C 語言提供四種迴圈機制:for、while、do-while 以及 goto 構建的無條件跳轉迴圈。雖然理論上可相互替換,但各有適用場景與優缺點。本文系統比較,助你做最佳選擇。
| 迴圈類型 | 判斷時機 | 至少執行一次 | 適用場景 | 推薦度 |
|---|---|---|---|---|
for | 先判斷 | 否 | 已知迭代次數、計數器控制、複雜初始化/更新邏輯 | ⭐⭐⭐⭐⭐ |
while | 先判斷 | 否 | 次數未知、條件由外部輸入/計算決定 | ⭐⭐⭐⭐ |
do-while | 後判斷 | 是 | 選單系統、至少需執行一次的互動流程 | ⭐⭐⭐ |
goto 迴圈 | 自定 | 視邏輯 | 極少數多層跳出、舊代碼維護 | ❌ 不推薦 |
int i = 1, sum = 0;
loop:
if (i <= 100) {
sum += i;
i++;
goto loop;
}
缺點:程式流程跳躍難追蹤,破壞結構化程式設計,易產生「義大利麵條式代碼」。現代開發嚴禁使用,僅在極罕見的多層巢狀迴圈緊急跳出時考慮(且可用 break+標誌變數或函式 return 替代)。
while:先檢查條件,條件為假則零次執行。適合「可能完全不執行」的場景(如讀取檔案至 EOF)。do-while:先執行一次,再檢查條件。適合「至少要跑一次」的場景(如選單顯示、輸入驗證)。for (init; condition; update) {
// 體
}
三大表達式整合了「初始化、條件判斷、狀態更新」,語義集中,易維護。甚至可省略任意表達式(保留分號),退化為 while(1) 無限迴圈或其他形式,彈性極高。
return。for 迴圈以結構緊湊、語義清晰、功能最完整,成為 C 語言迴圈的「瑞士刀」。掌握四者差異,依據業務語意選擇,才能寫出既高效又易維護的代碼。