系統(tǒng)會(huì)計(jì)算并獲取switch語(yǔ)句后面小括號(hào)內(nèi)的表達(dá)式或變量的值。隨后,這個(gè)計(jì)算結(jié)果會(huì)與每個(gè)case后面的常量進(jìn)行比較。
當(dāng)二者的值相等時(shí),就會(huì)執(zhí)行該case塊中的代碼。若在代碼中遇到break關(guān)鍵字,程序會(huì)跳出當(dāng)前的switch選擇結(jié)構(gòu),并執(zhí)行switch選擇結(jié)構(gòu)之后的代碼。
如果任何一個(gè)case后面的常量與switch后小括號(hào)中的值都不相等,那么程序會(huì)執(zhí)行switch尾部的default塊中的代碼。
關(guān)于switch case的詳細(xì)解釋?zhuān)?/p>
1. "Switch"在編程中意為“開(kāi)關(guān)”,它是一種“選擇”語(yǔ)句,使用方式十分簡(jiǎn)便。
2. Switch語(yǔ)句是一種多分支選擇語(yǔ)句。簡(jiǎn)而言之,多分支就是多個(gè)if語(yǔ)句的 *** 。
3. 從功能上看,switch語(yǔ)句和if語(yǔ)句可以相互替代,但在編程實(shí)踐中,它們各有特點(diǎn)。在選擇的分支較多時(shí),C語(yǔ)言提供switch語(yǔ)句以處理多分支選擇,使程序更加簡(jiǎn)潔。if和switch可以說(shuō)是各有分工。在許多大型項(xiàng)目中,多分支選擇的情況很常見(jiàn),所以switch語(yǔ)句的使用頻率相對(duì)較高。
4. Switch語(yǔ)句的一般形式為:先給出switch后面的表達(dá)式,然后是一系列的case和default語(yǔ)句。每個(gè)case后面跟一個(gè)常量表達(dá)式和對(duì)應(yīng)的執(zhí)行語(yǔ)句,default是所有case都不匹配時(shí)的默認(rèn)執(zhí)行塊。
擴(kuò)展說(shuō)明:
1. Switch后面的括號(hào)內(nèi)的“表達(dá)式”必須是整數(shù)類(lèi)型,可以是int型變量、char型變量,也可以是整數(shù)或字符常量。但絕對(duì)不能是實(shí)數(shù),如float型變量、double型變量、小數(shù)常量等,這些都是語(yǔ)法錯(cuò)誤。
2. 所有的case和default必須被一對(duì)大括號(hào){}包圍。
3. 當(dāng)switch后面括號(hào)內(nèi)的表達(dá)式的值與某個(gè)case后面的常量表達(dá)式的值相等時(shí),會(huì)執(zhí)行該case后的語(yǔ)句。執(zhí)行完一個(gè)case的語(yǔ)句后,程序流程會(huì)繼續(xù)執(zhí)行下一個(gè)case的語(yǔ)句。若只想執(zhí)行一個(gè)case的語(yǔ)句而不執(zhí)行其他case的語(yǔ)句,需在該case的語(yǔ)句后加上break以跳出switch語(yǔ)句。
需再次強(qiáng)調(diào)的是:switch是“選擇”語(yǔ)句而非“循環(huán)”語(yǔ)句。盡管break常被誤認(rèn)為是用于循環(huán)的結(jié)束,但在switch語(yǔ)句中,break的主要作用是跳出switch結(jié)構(gòu)。
另外一些注意事項(xiàng):
1. 所有case后面的常量表達(dá)式的值必須互不相同,否則會(huì)造成語(yǔ)法錯(cuò)誤和程序矛盾。
2. “case常量表達(dá)式”僅作為語(yǔ)句的標(biāo)號(hào),不進(jìn)行實(shí)際判斷。程序會(huì)根據(jù)switch后面的表達(dá)式的值找到匹配的標(biāo)號(hào)并從此標(biāo)號(hào)開(kāi)始執(zhí)行。
3. case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果,但從閱讀的角度考慮,建議按照字母或數(shù)字的順序書(shū)寫(xiě)。
4. default語(yǔ)句可以省略,但建議加上以提醒他人此為switch語(yǔ)句的結(jié)束。即使default是最后一句,其后也不必加break,因?yàn)閳?zhí)行完后自然就退出了switch。
以下是一個(gè)C語(yǔ)言中switch case語(yǔ)句的實(shí)例:
```c
#include
int main(void){
int a;
printf("請(qǐng)輸入一個(gè)整數(shù):");
scanf("%d", &a);
switch(a){
case 1: printf("星期一\n"); break;
case 2: printf("星期二\n"); break;
case 3: printf("星期三\n"); break;
// 其他情況可以在此繼續(xù)添加...
default: printf("未匹配到對(duì)應(yīng)星期\n"); break; // 如果不匹配任何情況則執(zhí)行此默認(rèn)操作
}
return 0;
```
在這個(gè)例子中,程序會(huì)根據(jù)用戶(hù)輸入的整數(shù)來(lái)輸出對(duì)應(yīng)的星期名稱(chēng)。程序解讀:
本程序是要求輸入一個(gè)數(shù)字,輸出它對(duì)應(yīng)的星期的英文單詞。
注意項(xiàng):
1. 在case后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。
2. 在case后,允許有多個(gè)語(yǔ)句,可以不用{}括起來(lái)。
3. 各case和default子句的先后順序可以變動(dòng),而不會(huì)影響程序執(zhí)行結(jié)果。
4. default子句可以省略不寫(xiě)。