用 if....else 語(yǔ)句在處理多分支的時(shí)候,分支太多就會(huì)顯得不方便,且容易出現(xiàn) if 和 else 配對(duì)出現(xiàn)錯(cuò)誤的情況,在 C 語(yǔ)言中提供了另外一種多分支選擇的語(yǔ)句——switch 語(yǔ)句,它的基本語(yǔ)法格式如下:
switch (表達(dá)式){
case 常量表達(dá)式1: 語(yǔ)句1;
case 常量表達(dá)式2: 語(yǔ)句2;
......
case 常量表達(dá)式 n: 語(yǔ)句 n;
default: 語(yǔ)句 n+1;
}
它的執(zhí)行過(guò)程是:首先計(jì)算“表達(dá)式”的值,然后從第一個(gè) case 開(kāi)始,與“常量表達(dá)式 x”進(jìn)行比較,如果與當(dāng)前常量表達(dá)式的值不相等,那么就不執(zhí)行冒號(hào)后邊的語(yǔ)句 x,一旦發(fā)現(xiàn)和某個(gè)常量表達(dá)式的值相等了,那么它會(huì)執(zhí)行之后所有的語(yǔ)句,如果直到最后一個(gè)“常量表達(dá)式 n”都沒(méi)有找到相等的值,那么就執(zhí)行 default 后的“語(yǔ)句 n+1”。請(qǐng)?zhí)貏e注意一點(diǎn),當(dāng)找到一個(gè)相等的 case 分支后,會(huì)執(zhí)行該分支以及之后所有分支的語(yǔ)句,很明顯這不是我們想要的結(jié)果。
在 C 語(yǔ)言中,有一條 break 語(yǔ)句,作用是跳出當(dāng)前的循環(huán)語(yǔ)句,包括 for 循環(huán)和 while 循環(huán),同時(shí),它還能用來(lái)結(jié)束 switch 語(yǔ)句塊。switch 的分支語(yǔ)句一共有 n+1 種,而我們通常希望的都是選擇其中的一個(gè)分支來(lái)執(zhí)行,執(zhí)行完后就結(jié)束整個(gè) switch 語(yǔ)句,而繼續(xù)執(zhí)行 switch 后面的語(yǔ)句,此時(shí)就可以通過(guò)在每個(gè)分支后加上 break 語(yǔ)句來(lái)實(shí)現(xiàn)了。如下:
switch (表達(dá)式){
case 常量表達(dá)式1: 語(yǔ)句1; break;
case 常量表達(dá)式2: 語(yǔ)句2; break;
......
case 常量表達(dá)式 n: 語(yǔ)句 n; break;
default: 語(yǔ)句 n+1; break;
}
加了這個(gè) break 語(yǔ)句后,一旦“常量表達(dá)式 x”與“表達(dá)式”的值相等了,那么就執(zhí)行“語(yǔ)句 x”,執(zhí)行完畢后,由于有了 break 則直接跳出 switch 語(yǔ)句,繼續(xù)執(zhí)行 switch 語(yǔ)句后面的程序了,這樣就可以避免執(zhí)行不必要的語(yǔ)句。了解了這個(gè) switch 語(yǔ)句后,我們馬上會(huì)在本章程序中使用鞏固它。