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

C語言 switch-case 穿透行為經典考題:X='A' 時輸出什麼?

     編輯:C 語言問答

題目程式碼

switch (X) {
    case 'A': printf("A");
    case 'B': printf("B");
    default:  printf("error");
}
假設 X = 'A'

執行流程

  1. case 'A' 匹配,進入執行 printf("A")。
  2. 無 break,繼續「穿透」向下執行。
  3. 執行 case 'B' 的 printf("B")。
  4. 繼續穿透執行 default 的 printf("error")。
  5. switch 結束。

輸出結果

A B error
// 實際螢幕上連續顯示: AerrorB? 取決於輸出緩衝,通常為 "ABerror"

選項對應

  • A. A
  • B. B
  • C. error
  • D. ABerror ← **正確答案**

核心知識點

  • switch 是標籤跳轉,匹配後從該標籤**順序執行**至結尾或遇到 break。
  • break 用於**跳出 switch**,非迴圈專用。
  • default 可放任意位置,慣例放最後。
  • C17 允許 case 1 ... 5: 範圍標籤 (GCC 擴展),標準 C 不支援。

最佳實踐

  1. 每個 case 結尾**必須加 break**,除非刻意穿透(並加註解 /* fallthrough */)。
  2. C23 引入 [[fallthrough]] 屬性,編譯器可檢查遺漏。
  3. 預設情況下,default 也加 break 以防未來新增 case 導致邏輯錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved