C++ 提供了兩種按條件執(zhí)行的語句,一種是 if ,它根據(jù)條件決定控制流命锄。另一種是 switch 堰乔, 它計算整個表達(dá)式的值,然后根據(jù)這個值從幾條執(zhí)行路徑中選擇一條脐恩。
if 語句的作用是判斷一個指定的條件是否為真镐侯,根據(jù)判斷結(jié)果決定是否執(zhí)行另一條語句。
其中 condition 可以是一個表達(dá)式驶冒,也可以是一個初始化了的變量聲明苟翻。但其類型都必須能轉(zhuǎn)換成布爾類型。
通常情況下 statemenr statemenr2 是語句塊骗污。
為了避免代碼混亂不清崇猫,很多時候要求在 if 和 else 之后必須加上或括號(while 和 for 的循環(huán)體兩端也有同樣要求)
當(dāng)一個 if 語句嵌套在另一個 if 語句內(nèi)部時,很可能 if 分支會多于 else 分支需忿。這時如何定義 哪個 else 是和哪個 if 匹配的呢诅炉?(懸垂else)
在 C++ 中規(guī)定了距離 else 最近的尚未匹配的 if 與其匹配。
要想使 else 分支和外層的 if 語句匹配起來屋厘,可以在內(nèi)層 if 語句的兩端加上花括號涕烧,使其成為一個塊。
switch 語句提供了一條便利的途徑使得我們能夠在若干固定選項中做出選擇汗洒。
假如想統(tǒng)計五個元音字母在文本中出現(xiàn)的次數(shù)议纯,程序邏輯應(yīng)該如下所示:
從輸入的內(nèi)容中讀取所有字符,令每一個字符都與元音字母的集合比較溢谤,如果字符與某個元音字母匹配瞻凤,將該字母的數(shù)量加1,顯示結(jié)果世杀。
switch 首先會對括號里的表達(dá)式求值阀参,該表達(dá)式緊跟在關(guān)鍵字 switch 的后面,可以是一個初始化的變量聲明瞻坝。
表達(dá)式的值轉(zhuǎn)換成整數(shù)類型结笨,然后與每個 case 標(biāo)簽的值比較。如果表達(dá)式和某個 case 標(biāo)簽的值匹配成功湿镀,程序從該標(biāo)簽之后的第一條語句開始執(zhí)行炕吸,直到達(dá)到了 switch 的結(jié)尾或者是遇到了一條 break 語句為止。
break 語句的作用是中斷當(dāng)前的控制流勉痴。
case 關(guān)鍵字和它對應(yīng)的值一起被稱為 case標(biāo)簽 且必須是整型常量表達(dá)式赫模。
任何兩個 case標(biāo)簽 的值不能相同。(default 也是一種特殊的 case標(biāo)簽)
如果某個 case標(biāo)簽 匹配成功蒸矛,將從該標(biāo)簽開始往后順序執(zhí)行所有 case分支瀑罗,除非程序顯式地中斷這一過程胸嘴。所以大多數(shù)情況下在下一個 case標(biāo)簽前會有一個 break語句。
然而有些時候默認(rèn)的 switch 行為才是程序真正需要的斩祭,每個 case標(biāo)簽只能對應(yīng)一個值劣像,但有時候希望兩個或多個值共享同一組操作,此時便可以省略掉 break 語句摧玫,讓程序連續(xù)執(zhí)行若干個 case標(biāo)簽耳奕。
default標(biāo)簽