C語言中文網 目錄

C語言switch case 語句

switch 語句根據控制表達式的值,可以把程序流跳轉到多個語句中的一個執行:

switch (表達式) 語句


括號里的表達式具有整數類型,并且這里的語句就是該 switch 主體,它包括了多個 case 標簽,以及最多一個 default 標簽。

括號里的表達式會被計算一次,并和 case 標簽中的常量表達式做比較。如果表達式的值匹配其中的某個 case 常量,程序流就會跳轉到該 case 標簽后面的語句。如果沒有匹配的 case 常量,程序流就會跳轉到 default 標簽后的語句(如果存在 default 標簽)。

例 1 使用了 switch 語句來處理用戶所選的菜單命令。

【例1】switch 語句
// 處理用戶所選擇的菜單命令
// ---------------------------------------------------
// 聲明用到的其他函數
int menu( void );             // 輸出菜單,并返回用戶鍵入的字符
void action1( void ),
     action2( void );
/* ... */
switch ( menu() )             // 根據menu()的結果跳轉
{
   case 'a':
   case 'A': action1();               // 執行動作1
             break;           // 不執行任何其他動作

   case 'b':
   case 'B': action2();       // 執行動作2
             break;           // 不執行默認的動作

   default:  putchar( '\a' ); // 如果沒有識別到任何命令,輸出一個警告信息
}

case 和 defaul 標簽的語法如下:

case 常量:     語句
default:        語句


case 后的常量指的是常量表達式,它必須是整數類型。在一個特定的 switch 語句中,每個 case 常量都必須具有獨一無二的值,不可以重復。但是 switch 語句可以包含多個 case 標簽。

default 標簽是可選的,可以放在 switch 語句體內任何位置。如果沒有 default 標簽,并且沒有任何 case 常量符合 switch 語句控制表達式的計算結果,那么 switch 語句體中的語句都不會執行。在這種情況下,程序流會轉而執行 switch 語句體后面的語句。

switch 語句體通常是一個從 case 標簽開始的語句塊。如果在第一個 case 標簽之前有語句,這些語句并不會被執行。

C 語言的標簽只用于標識程序流可能跳轉到的目的地。這些標簽本身對程序沒有影響。因此,從 switch 跳轉到第一個符合條件的 case 標簽之后,程序會繼續順序執行,不受其他標簽的影響。

如果在這個符合條件的 case 標簽之后,其他 case 標簽中的語句應該被忽略,就應該在所執行的最后一條語句后,加上 break 語句,使得程序流直接跳轉到 switch 語句體的后面。

如果需要在 switch 語句內聲明變量,那么這些變量應該被聲明在嵌套的內部語句塊中,如下所示:
switch ( x )
{
   case C1: { int temp = 10;    // 聲明temp,僅為該case使用
              /* ... */
            }
            break;
   case C2:
            /* ... */
}

在 switch 表達式中,應用了整數提升。case 常量被轉換為匹配 switch 表達式計算結果的類型。

也可改用 else if 語句來實現 switch/case 語句效果。但是如果依據一個整數表達式的值來判斷程序流,則應該使用 switch/case 語句,這種方式可以提高代碼的可閱讀性。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo