13.2 switch语句

优质
小牛编辑
132浏览
2023-12-01

谈到枚举类型就不得不提switch语句,因为它们经常一起出现。switch语句是表示一组条件选择的另一种方式,而且语法上更漂亮,往往执行上也更有效率。switch语句看起来是这个样子的:

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

switch语句与下面一组条件语句等价:

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

switch语句每个分支中的break是必须的,否则执行流会贯穿到下一个case条件。如果没有break语句,symbol为 ‘+’时,程序会先执行加法,然后执行乘法,最后打印错误信息。这个特性偶尔也用得到,不过大多数情况下,当程序员忘记break时,这是错误之源。

switch语句可以使用整型数、字符型和枚举类型。比如,可以这样把Suit变量值转换为相应的字符串:

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语句,因为return会使函数的执行流程返回到调用处,不会贯穿到下一个case条件。

一般,在每个switch语句中都包含一个default条件——用以处理错误和意外值——是个好的编程风格。