C語言switch語句


C語言中的switch語句用於從多個條件執行程式碼。 就像if else-if語句一樣。

C語言中switch語句的語法如下:

switch(expression){    
case value1:    
 //code to be executed;    
 break;  //optional  
case value2:    
 //code to be executed;    
 break;  //optional  
......    

default:     
 code to be executed if all cases are not matched;    
}

C語言中switch語句的規則如下 -

  1. switch表示式必須是整數或字元型別。
  2. case值必須是整數或字元常數。
  3. case值只能在switch語句中使用。
  4. switch case中的break語句不是必須的。這是一個可選項。 如果在switch case中沒有使用break語句,則匹配case值後將執行所有後的語句。它被稱為通過C語言switch語句的狀態。

我們試著通過例子來理解它。假設有以下變數及賦值。

int x,y,z;  
char a,b;  
float f;
有效的Switch 無效的Switch 有效的Case 無效的Case
switch(x) switch(f) case 3; case 2.5;
switch(x>y) switch(x+2.5) case ‘a’; case x;
switch(a+b-2) case 1+2; case x+2;
switch(func(x,y)) case ‘x’>’y’; case 1,2,3;

C語言中的switch語句的流程圖 -

我們來看一個簡單的C語言switch語句範例。建立一個原始檔:switch-statment.c,其程式碼如下 -

#include<stdio.h>  
#include<conio.h>  
void main() {
    int number = 0;

    printf("Enter a number:");
    scanf("%d", &number);

    switch (number) {
    case 10:
        printf("number is equals to 10\n");
        break;
    case 50:
        printf("number is equal to 50\n");
        break;
    case 100:
        printf("number is equal to 100\n");
        break;
    default:
        printf("number is not equal to 10, 50 or 100\n");
    }
}

執行上面範例程式碼,得到以下結果 -

Enter a number:88
number is not equal to 10, 50 or 100

執行第二次,結果如下 -

Enter a number:50
number is equal to 50
請按任意鍵繼續. . .

switch語句直通到尾

在C語言中,switch語句是通過的,這意味著如果在switch case中不使用break語句,則匹配某個case之後的所有的case都將被執行。

我們來試試通過下面的例子來了解switch語句的狀態。建立一個原始檔:switch-fall-through.c,其程式碼如下所示 -

#include<stdio.h>  
#include<conio.h>  
void main() {
    int number = 0;

    printf("enter a number:");
    scanf("%d", &number);

    switch (number) {
    case 10:
        printf("number is equals to 10\n");
    case 50:
        printf("number is equal to 50\n");
    case 100:
        printf("number is equal to 100\n");
    default:
        printf("number is not equal to 10, 50 or 100\n");
    }
}

執行上面範例程式碼,得到以下結果 -

enter a number:10
number is equals to 10
number is equal to 50
number is equal to 100
number is not equal to 10, 50 or 100
請按任意鍵繼續. . .

從上面的輸出結果中,可以清楚地看到,當匹配 number = 10 之後,由於沒有break語句,其它後面的語句也列印執行了。