C語(yǔ)言中,switch語(yǔ)句是一種比較常用的控制結(jié)構(gòu),用于在多個(gè)條件中選擇執(zhí)行不同的代碼塊。switch語(yǔ)句的基本語(yǔ)法如下:
switch (expression)
{
case constant:
// 在滿足條件時(shí)執(zhí)行的代碼塊
break;
case constant:
// 在滿足條件時(shí)執(zhí)行的代碼塊
break;
...
default:
// 當(dāng)以上條件都不滿足時(shí)執(zhí)行的代碼塊
}
switch語(yǔ)句的括號(hào)中,expression表示需要進(jìn)行比較的表達(dá)式,可以是常數(shù)、變量或者表達(dá)式。
在括號(hào)內(nèi)的expression將會(huì)與每個(gè)case語(yǔ)句后的常量進(jìn)行比較,如果匹配成功,則執(zhí)行相應(yīng)的代碼塊。constant表示一個(gè)常量或常量表達(dá)式,可以是整數(shù)、字符、枚舉等等。
當(dāng)expression的值與某個(gè)case語(yǔ)句中的常量相等時(shí),程序?qū)?huì)執(zhí)行該case語(yǔ)句下的代碼塊。在執(zhí)行完代碼塊后,程序會(huì)跳出switch語(yǔ)句繼續(xù)執(zhí)行后續(xù)的代碼。
為了避免出現(xiàn)錯(cuò)誤,每個(gè)case代碼塊的末尾通常都會(huì)有一個(gè)break語(yǔ)句,用于跳出switch語(yǔ)句。如果省略了break語(yǔ)句,程序?qū)?huì)繼續(xù)執(zhí)行后續(xù)case語(yǔ)句下的代碼塊,直到遇到break語(yǔ)句或switch語(yǔ)句結(jié)束為止。
在所有的case語(yǔ)句都不滿足的情況下,可以使用default語(yǔ)句來(lái)定義一個(gè)默認(rèn)的代碼塊。default語(yǔ)句通常位于switch語(yǔ)句的最后,當(dāng)所有的case都不匹配時(shí),程序?qū)?huì)執(zhí)行default代碼塊。
下面是一個(gè)簡(jiǎn)單的例子,演示了如何使用switch語(yǔ)句來(lái)判斷一個(gè)字符的類型:
#include
int main()
{
char ch = 'A';
switch (ch)
{
case 'A':
case 'a':
printf("這是一個(gè)英文字母An");
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
printf("這是一個(gè)數(shù)字n");
break;
default:
printf("這是其他字符n");
}
return 0;
}
以上代碼中,我們判斷了字符ch的類型,如果字符是大寫或小寫的字母A,輸出"這是一個(gè)英文字母A";如果字符是數(shù)字0到9之間的任意一個(gè),輸出"這是一個(gè)數(shù)字";如果不是以上兩種情況,輸出"這是其他字符"。
需要注意的是,在每個(gè)case語(yǔ)句中我們都可以提供多個(gè)常量,用來(lái)實(shí)現(xiàn)多個(gè)條件的合并判斷。比如在上面的例子中,我們將大寫和小寫的字母A合并成了一個(gè)條件。
另外,在switch語(yǔ)句中,case語(yǔ)句的順序非常重要。當(dāng)expression的值與某個(gè)case語(yǔ)句的常量匹配時(shí),程序?qū)脑揷ase語(yǔ)句開(kāi)始執(zhí)行,直到遇到break語(yǔ)句或switch語(yǔ)句結(jié)束。因此,如果有多個(gè)常量的值相同,且其中一個(gè)常量的case語(yǔ)句出現(xiàn)在較前的位置,而其它常量的case語(yǔ)句出現(xiàn)在較后的位置時(shí),程序?qū)?huì)執(zhí)行較前的case語(yǔ)句下的代碼塊。
總結(jié)一下,switch語(yǔ)句是一種根據(jù)表達(dá)式的值來(lái)選擇執(zhí)行不同代碼塊的控制結(jié)構(gòu)。在switch語(yǔ)句的括號(hào)中,我們需要提供一個(gè)常數(shù)、變量或表達(dá)式作為比較的基準(zhǔn)。在每個(gè)case語(yǔ)句中,我們可以提供一個(gè)或多個(gè)常量,用來(lái)匹配expression的值。通過(guò)在每個(gè)case中提供break語(yǔ)句,我們可以在滿足條件時(shí)執(zhí)行相應(yīng)的代碼塊并跳出switch語(yǔ)句。最后,如果沒(méi)有任何case語(yǔ)句滿足條件,我們可以使用default語(yǔ)句定義一個(gè)默認(rèn)的代碼塊。
-
Switch
+關(guān)注
關(guān)注
1文章
541瀏覽量
61416 -
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7642瀏覽量
144743 -
程序
+關(guān)注
關(guān)注
117文章
3837瀏覽量
84921 -
代碼
+關(guān)注
關(guān)注
30文章
4947瀏覽量
73281 -
變量
+關(guān)注
關(guān)注
0文章
615瀏覽量
29392
發(fā)布評(píng)論請(qǐng)先 登錄
C語(yǔ)言中if語(yǔ)句、if-else語(yǔ)句和switch語(yǔ)句詳解
#include<>尖括號(hào)里應(yīng)該寫什么?用的是AT91F40816的單片機(jī)
STM32中C語(yǔ)言問(wèn)題
Linux內(nèi)核編碼大括號(hào)和空格的放置
C語(yǔ)言中一個(gè)括號(hào)引發(fā)的……
C++語(yǔ)言基礎(chǔ)講解視頻Switch分支條件判斷語(yǔ)句
C語(yǔ)言教程之讀/寫BIOS計(jì)時(shí)器
既然C編譯器是C語(yǔ)言寫,那么第一個(gè)C編譯器是怎樣來(lái)的?
51單片機(jī)實(shí)戰(zhàn)教程之C語(yǔ)言基礎(chǔ)(九 switch語(yǔ)句)
基于STM32從零寫操作系統(tǒng)系列---使用C語(yǔ)言

c語(yǔ)言switch后面括號(hào)怎么寫
評(píng)論