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
語句的規則如下 -
-
switch
表達式必須是整數或字符類型。 -
case
值必須是整數或字符常量。 -
case
值只能在switch
語句中使用。 -
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
語句,其它後面的語句也打印執行了。