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

站長編程基礎:C語言 switch 語句完整指南與最佳實踐

     編輯:關於C

switch 是多分支選擇的高效結構,比多層 if-else 更清晰、效能更好。本文系統講解語法、執行流程、break 關鍵作用、使用經驗與常見陷阱,適合站長快速回顧與實戰參考。

基本語法


switch (表達式) {
    case 常量1:
        語句;
        break;
    case 常量2:
        語句;
        break;
    default:
        語句;
        break;
}

執行流程

  1. 計算表達式值
  2. 自上而下比較各 case 常量
  3. 匹配則執行該分支,遇 break 跳出 switch
  4. 無匹配則執行 default(可選)
  5. 若無 break → 貫穿 繼續執行下一 case

為什麼要用 break?


switch(x) {
    case 1: printf("一");  // 無 break
    case 2: printf("二");
    case 3: printf("三");
}
x=1 輸出:一二三  ← 通常不是預期

break 使分支「井水不犯河水」,符合多分支互斥語義。

使用經驗與規範

規則說明
配合 case/break標準三件套,缺一不可
表達式類型整型、字符型、枚舉型(C 不支援字符串)
case 後只能是常量整型/字符常量,不可為變量/表達式
case 值互不相同重複會導致邏輯錯誤
case/default 順序可打亂不影響執行效果,但建議 default 置底
建議加 default處理預期外值,提升健壯性

進階技巧

合併 case(無 break 故意貫穿)


switch(ch) {
    case 'a': case 'e': case 'i': case 'o': case 'u':
    case 'A': case 'E': case 'I': case 'O': case 'U':
        printf("元音"); break;
    default: printf("輔音");
}

字符串模擬 switch(C 無原生支援)


// 方案 1:哈希映射
// 方案 2:if-else 鏈 + strcmp
// 方案 3:自定義跳轉表

常見錯誤與避坑

錯誤代碼問題修正
case x > 0:case 後非常量用 if-else
case 1: case 1:重複常量合併或刪除
漏寫 break非預期貫穿加 break 或註釋 // fallthrough
switch(float)浮點型不可用轉整型或用 if-else
default 缺失無匹配時無處理加 default 或斷言

效能對比

  • switch:編譯器常優化為跳轉表 O(1)
  • if-else 鏈:順序比較 O(n)
  • 分支 > 3 個時,switch 明顯優勢

總結

  • ✅ 多分支首選 switch
  • ✅ case 必須是常量,互不相同
  • ✅ 習慣加 break,需貫穿時明確註釋
  • ✅ 加 default 防禦性編程
  • ✅ 理解跳轉表優化原理,寫出高效代碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved