C++ switch語句

2023-03-20 16:24 更新

談到枚舉類型就不得不提switch語句,因?yàn)樗鼈兘?jīng)常一起出現(xiàn)。switch語句是表示一組條件選擇的另一種方式,而且語法上更漂亮,往往執(zhí)行上也更有效率。switch語句看起來是這個(gè)樣子的:

switch (symbol) {
case ’+’:
  perform_addition ();
  break;
case ’*’:
  perform_multiplication ();
  break;
default:
  cout << "I only know how to perform addition and multiplication" << endl;
  break;
}

switch語句與下面一組條件語句等價(jià):

if (symbol == ’+’) {
  perform_addition ();
} else if (symbol == ’*’) {
  perform_multiplication ();
} else {
  cout << "I only know how to perform addition and multiplication" << endl;
}

switch語句每個(gè)分支中的break是必須的,否則執(zhí)行流會(huì)貫穿到下一個(gè)case條件。如果沒有break語句,symbol為 ‘+’時(shí),程序會(huì)先執(zhí)行加法,然后執(zhí)行乘法,最后打印錯(cuò)誤信息。這個(gè)特性偶爾也用得到,不過大多數(shù)情況下,當(dāng)程序員忘記break時(shí),這是錯(cuò)誤之源。

switch語句可以使用整型數(shù)、字符型和枚舉類型。比如,可以這樣把Suit變量值轉(zhuǎn)換為相應(yīng)的字符串:

switch (suit) {
case CLUBS: return "Clubs";
case DIAMONDS: return "Diamonds";
case HEARTS: return "Hearts";
case SPADES: return "Spades";
default: return "Not a valid suit";
}

這種情況并不需要break語句,因?yàn)閞eturn會(huì)使函數(shù)的執(zhí)行流程返回到調(diào)用處,不會(huì)貫穿到下一個(gè)case條件。

一般,在每個(gè)switch語句中都包含一個(gè)default條件——用以處理錯(cuò)誤和意外值——是個(gè)好的編程風(fēng)格。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)