切換陳述式 (C)
switch和案例陳述式說明控制複雜條件和分支作業。switch陳述式將控制轉移到其主體中的陳述式。
語法
選擇陳述式:
**切換 (運算式)**陳述式標記陳述式:
案例常數運算式**:** 陳述式預設: 陳述式
將控制項傳遞至陳述式的案例 常數運算式 的值 切換 ( 運算式 )。switch陳述式可以包含任何數目的案例執行個體,但不是在相同的兩個 case 常數switch陳述式可以有相同的值。執行陳述式主體的開始在選取的陳述式,然後繼續到結尾的主體,或是一直中斷陳述式將轉移超出本文的控制項。
使用switch陳述式通常看起來像這樣:
switch( 運算式 )
{
宣告
.
.
.
案例 常數運算式 :
如果運算式等於執行陳述式
這個常數運算式的值
.
.
.
中斷。
預設值:
如果不等於運算式執行的陳述式
任何大小寫的常數運算式
}
您可以使用中斷陳述式來結束處理特定的案例中的switch陳述式,將程式分支到最後的switch陳述式。沒有中斷,程式會繼續下一步的情況下,執行直到陳述式 中斷或陳述式結束為止。在某些情況下,此接續可能令人滿意。
預設 陳述式時如果沒有 案例常數運算式 的值等於 切換 (運算式)。 如果預設省略陳述式,且不案例找到符合的陳述式,在switch主體會執行。可以有最多一個預設陳述式。預設陳述式不需要是結尾 ; 它可以出現在任何地方的switch陳述式。A 案例或預設標籤只能出現在switch陳述式。
哪種switch運算式和案例常數運算式必須為整數。 每個值案例 常數運算式陳述式主體內必須是唯一。
案例和預設標籤的switch陳述式主體是有意義的只是在初始測試可判斷於何處開始執行陳述式主體中。Switch 陳述式可以是巢狀。所有靜態變數會在任何執行之前初始化switch陳述式。
![]() |
---|
宣告可以出現在複合陳述式組成的頭switch主體,但是在宣告中所包含的初始設定並不會執行。switch陳述式將控制轉移直接為可執行陳述式主體中,略過包含初始設定的線條。 |
下列範例說明switch陳述式:
switch( c )
{
case 'A':
capa++;
case 'a':
lettera++;
default :
total++;
}
所有的三個陳述式的switch在這個範例中的主體會執行c相當於'A'因為中斷陳述式不會出現下列情況之前。執行控制將轉移到第一個陳述式 (capa++;),並繼續完成剩餘的內文的順序。If c is equal to 'a', lettera and total are incremented.只有total就會遞增,如果c不等於'A'或'a'。
switch( i )
{
case -1:
n++;
break;
case 0 :
z++;
break;
case 1 :
p++;
break;
}
在這個範例中, 中斷的每個陳述式之後的陳述式switch內文。中斷陳述式會執行一個陳述式之後,會強制逃生口陳述式主體。如果i等於-1,只有n就會增加。中斷陳述式之後的n++;會使執行控制項傳遞的陳述式的主體,略過其他的陳述式。同樣地,如果i的確等於 0,只有z就會增加。 如果i等於 1,只有p就會增加。最終中斷陳述式不是絕對必要,因為控制項會忽略超出本文結尾的複合陳述式中,但它是為了一致性。
單一陳述式可以執行多個案例標籤,如下列範例所示:
case 'a' :
case 'b' :
case 'c' :
case 'd' :
case 'e' :
case 'f' : hexcvt(c);
在這個範例中,如果常數運算式等於之間的任一個字母'a'和'f'、 hexcvt函式被呼叫。
Microsoft 專有的
Microsoft c 沒有限制的大小寫的值,以數字switch陳述式。數目只受限於可用記憶體。ANSI c 需要至少 257 case 標記中允許switch陳述式。
Microsoft c 的預設值是 Microsoft 擴充功能會啟用。您可以使用 [/Za 編譯器選項來停用這些擴充功能。
結束 Microsoft 特定