目次
1. 前言:什麼是 C 語言的條件分支?
條件分支的重要性與作用
在程式設計中,條件分支扮演著關鍵角色。透過根據特定條件執行不同的處理,可以提升程式的靈活性與效率。
C 語言中的條件分支基礎
在 C 語言中,實現條件分支主要有以下兩種方式:
- if-else 敘述
- switch-case 敘述
其中,switch-case 敘述能有效處理多個條件,特別適合在存在明確選項的情境中使用。
switch-case 的作用與使用情境
switch-case
敘述是一種根據特定變數值來分支處理的控制結構,常見的應用場景包括:
- 選單選擇程式
- 依數值或文字進行分類判斷
- 簡易狀態管理
使用情境範例
例如,在應用程式中根據選單編號執行不同動作。當使用者輸入「1」時,程式輸出「開始」;若選擇「2」,則輸出「結束」。
學習 switch-case 的好處
- 程式碼簡潔、可讀性高
- 分支結構清晰,降低錯誤發生率
- 提升程式的執行效率
本文將從 switch-case 的基本語法到進階應用與注意事項進行完整解說。藉此深入理解 C 語言的條件分支,並培養實用的程式設計能力。

2. switch-case 的基本語法與使用方法
基本語法
以下是 switch-case
的基本語法:
switch (表達式) {
case 常數1:
// 處理1
break;
case 常數2:
// 處理2
break;
default:
// 其他處理
}
程式範例:判斷星期
#include <stdio.h>
int main() {
int day;
printf("請輸入星期的數字 (1〜7): ");
scanf("%d", &day);
switch (day) {
case 1:
printf("星期一n");
break;
case 2:
printf("星期二n");
break;
case 3:
printf("星期三n");
break;
case 4:
printf("星期四n");
break;
case 5:
printf("星期五n");
break;
case 6:
printf("星期六n");
break;
case 7:
printf("星期日n");
break;
default:
printf("輸入無效n");
}
return 0;
}
範例重點
- 每個 case 中必須加入
break
,以避免流程錯誤。 - 使用
default
可以處理不符合條件的輸入。
switch-case 的優點
- 提升可讀性: 條件分支簡單清晰。
- 減少程式碼量: 能有效表達針對同一變數的多重判斷。
- 防止錯誤: 可輕鬆加入對無效輸入的處理。
3. switch-case 的特徵與注意事項
特徵1:簡潔且可讀性高
switch-case
敘述能簡潔地表達多條件分支,使程式碼更具可讀性。
特徵2:專注於整數與字元判斷
switch-case
主要設計用於整數型 (int) 或字元型 (char) 的判斷。
使用注意事項
1. 不要忘記 break
int num = 1;
switch (num) {
case 1:
printf("Onen");
case 2:
printf("Twon");
default:
printf("Othern");
}
輸出結果:
One
Two
Other
修正方法:
int num = 1;
switch (num) {
case 1:
printf("Onen");
break;
case 2:
printf("Twon");
break;
default:
printf("Othern");
}
2. 只能使用常數
int x = 10;
switch (x) {
case x: // 錯誤
printf("錯誤n");
break;
}
修正版:
#define VALUE 10
switch (x) {
case VALUE:
printf("成功n");
break;
}
總結
- 不要忘記 break —— 避免不必要的落入 (fall-through)。
- 只能使用常數 —— 變數或運算式不能作為 case。
- 保持結構清晰 —— 善用縮排與註解提升可讀性。

4. if-else 與 switch-case 的比較:該如何選擇?
基本差異
1. 條件判斷方式
- if-else:用於邏輯運算與範圍條件。
- switch-case:用於判斷特定的常數值或字元。
比較表
比較項目 | if-else | switch-case |
---|---|---|
條件式 | 可使用邏輯運算與範圍條件 | 僅限整數或字元常數 |
可讀性 | 條件複雜時較難閱讀 | 多分支情境下更清楚 |
執行速度 | 可能較慢 | 編譯器可最佳化,執行較快 |
擴充性 | 可靈活新增條件 | 受限於常數,不易擴充 |
適用情境 | 適合範圍判斷或複雜邏輯 | 適合明確的值判斷與選單 |
實際範例
if-else 範例:
int score = 85;
if (score >= 90) {
printf("優n");
} else if (score >= 70) {
printf("良n");
} else {
printf("可n");
}
switch-case 範例:
int grade = 2;
switch (grade) {
case 1:
printf("優n");
break;
case 2:
printf("良n");
break;
case 3:
printf("可n");
break;
default:
printf("不可n");
}
5. 應用範例:更靈活運用 switch-case
1. 合併多個 case
char grade = 'A';
switch (grade) {
case 'A':
case 'B':
printf("及格n");
break;
case 'C':
printf("需要補考n");
break;
default:
printf("不及格n");
}
2. 善用 fall-through
int score = 85;
switch (score / 10) {
case 10:
case 9:
printf("優秀n");
break;
case 8:
case 7:
printf("良好n");
break;
default:
printf("不及格n");
}
3. 巢狀 switch-case
int menu = 1;
int subMenu = 2;
switch (menu) {
case 1:
switch (subMenu) {
case 1:
printf("子選單1-1n");
break;
case 2:
printf("子選單1-2n");
break;
}
break;
case 2:
printf("選單2n");
break;
}
6. 常見錯誤與解決方法
1. 忘記寫 break
int num = 1;
switch (num) {
case 1:
printf("Onen");
case 2:
printf("Twon");
default:
printf("Othern");
}
解決方法:
int num = 1;
switch (num) {
case 1:
printf("Onen");
break;
case 2:
printf("Twon");
break;
default:
printf("Othern");
}
2. 在 case 使用變數
int x = 10;
switch (x) {
case x: // 錯誤
printf("數值是10n");
break;
}
修正版:
#define VALUE 10
switch (x) {
case VALUE:
printf("成功n");
break;
}
3. 省略 default
int num = 5;
switch (num) {
case 1:
printf("Onen");
break;
case 2:
printf("Twon");
break;
}
解決方法:
switch (num) {
case 1:
printf("Onen");
break;
case 2:
printf("Twon");
break;
default:
printf("Othern");
}

7. 總結與下一步
1. 文章重點回顧
- 基本語法與使用方法
switch-case
是一種依據特定數值分支的便利控制結構。- 簡潔明瞭,特別適合明確的條件分支。
- 特徵與注意事項
- 僅能使用整數或字元常數。
- 務必使用
break
避免意外 fall-through。
- 與 if-else 的比較
- if-else 適合範圍或複雜條件;switch-case 適合明確值的分支。
- 依需求靈活選擇可提升程式效率。
- 應用技巧
- 合併 case、活用 fall-through、巢狀結構等技巧能提升靈活性。
- 常見錯誤與解法
- 針對 break 遺漏、default 省略等常見問題提出對策。
2. 下一步建議
1. 實作練習
將本文內容應用於以下範例:
- 計算機程式:利用
switch-case
處理四則運算。 - 選單應用:設計多層選單並實現操作。
- 成績管理系統:依分數自動分類等第。
2. 延伸學習
為進一步活用 switch-case
,建議深入以下主題:
- if-else 的進階應用
- 迴圈結構 (for, while)
- 函式與結構體
3. 優化與除錯
- 活用除錯工具:快速定位與修正錯誤。
- 程式碼審查:透過他人回饋提升品質。
3. 最後總結
switch-case
是 C 語言中高效的條件分支工具。掌握其基礎與應用,不僅能提升程式可讀性,也能讓程式運行更有效率。建議讀者在實際撰寫程式時多加練習,逐步養成良好的程式設計習慣。