C語(yǔ)言中的switch
語(yǔ)句用于從多個(gè)條件執(zhí)行代碼。 就像if else-if
語(yǔ)句一樣。
C語(yǔ)言中switch
語(yǔ)句的語(yǔ)法如下:
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語(yǔ)言中switch
語(yǔ)句的規(guī)則如下 -
switch
表達(dá)式必須是整數(shù)或字符類型。case
值必須是整數(shù)或字符常量。case
值只能在switch
語(yǔ)句中使用。switch case
中的break
語(yǔ)句不是必須的。這是一個(gè)可選項(xiàng)。 如果在switch case
中沒(méi)有使用break
語(yǔ)句,則匹配case
值后將執(zhí)行所有后的語(yǔ)句。它被稱為通過(guò)C語(yǔ)言switch
語(yǔ)句的狀態(tài)。我們?cè)囍ㄟ^(guò)例子來(lái)理解它。假設(shè)有以下變量及賦值。
int x,y,z;
char a,b;
float f;
有效的Switch | 無(wú)效的Switch | 有效的Case | 無(wú)效的Case |
---|---|---|---|
switch(x) | switch(f) | case 3; | case 2.5; |
switch(x>y) | switch(x+2.5) | case ‘a(chǎn)’; | case x; |
switch(a+b-2) | case 1+2; | case x+2; | |
switch(func(x,y)) | case ‘x’>’y’; | case 1,2,3; |
C語(yǔ)言中的switch
語(yǔ)句的流程圖 -
我們來(lái)看一個(gè)簡(jiǎn)單的C語(yǔ)言switch
語(yǔ)句示例。創(chuàng)建一個(gè)源文件: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");
}
}
執(zhí)行上面示例代碼,得到以下結(jié)果 -
Enter a number:88
number is not equal to 10, 50 or 100
執(zhí)行第二次,結(jié)果如下 -
Enter a number:50
number is equal to 50
請(qǐng)按任意鍵繼續(xù). . .
switch語(yǔ)句直通到尾
在C語(yǔ)言中,switch
語(yǔ)句是通過(guò)的,這意味著如果在switch case
中不使用break
語(yǔ)句,則匹配某個(gè)case
之后的所有的case
都將被執(zhí)行。
我們來(lái)試試通過(guò)下面的例子來(lái)了解switch
語(yǔ)句的狀態(tài)。創(chuàng)建一個(gè)源文件: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");
}
}
執(zhí)行上面示例代碼,得到以下結(jié)果 -
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
請(qǐng)按任意鍵繼續(xù). . .
從上面的輸出結(jié)果中,可以清楚地看到,當(dāng)匹配 number = 10 之后,由于沒(méi)有
break
語(yǔ)句,其它后面的語(yǔ)句也打印執(zhí)行了。