首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言 switch 語句:多條件分支、break 跳出機制、case 標籤規則與實戰

     編輯:C 語言基礎

為什麼需要 switch?

if-else 處理多分支時代碼冗長、易配對出錯。switch 專為整型常量值匹配設計,結構清晰、效率高(編譯器可優化為跳轉表)。

switch 語法

switch (表達式) {
    case 整型常量1: 語句1; break;
    case 整型常量2: 語句2; break;
    ...
    default: 語句n+1; break;
}

執行流程

  1. 計算表達式值(如 a)
  2. 從首個 case 開始比較
  3. 匹配成功 → 執行該 case 及後續所有語句(貫穿特性)
  4. 遇到 break → 跳出整個 switch
  5. 全不匹配 → 執行 default

關鍵:break 防止貫穿

switch(a) {
    case 1: printf("Monday\n");
    case 2: printf("Tuesday\n");
    // 輸入 1 → 輸出 Monday、Tuesday、Wednesday...error(貫穿)
}

加上 break 後每分支獨立執行。

完整實戰:數字轉星期英文

#include <stdio.h>
int main() {
    int a;
    printf("Input integer number: ");
    scanf("%d", &a);
    
    switch (a) {
        case 1: printf("Monday\n"); break;
        case 2: printf("Tuesday\n"); break;
        case 3: printf("Wednesday\n"); break;
        case 4: printf("Thursday\n"); break;
        case 5: printf("Friday\n"); break;
        case 6: printf("Saturday\n"); break;
        case 7: printf("Sunday\n"); break;
        default: printf("error\n"); break;
    }
    return 0;
}

運行結果

Input integer number: 4
Thursday

case 標籤規則

default 可選

  • 無 default 且全不匹配 → 什麼都不執行
  • 作為「養老」分支處理異常值,建議保留
  • 最後一個分支 break 可省(但建議保留一致性)

switch vs if-else 選擇

寫法合法性說明
case 10:✓整數常量
case 8+9:✓常量表達式(編譯期計算)
case 'A':✓字符常量(本質是整數)
case 'A'+19:✓字符常量表達式
case 9.5:✗浮點數不可
case a:✗變量不可(需編譯期常量)
case a+10:✗含變量不可
場景推薦
整型/字符常量精確匹配、分支多switch
範圍判斷、浮點數、複雜邏輯表達式if-else
字符串比較if-else + strcmp
編譯器優化(跳轉表)switch(案例密集時 O(1))
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved