C++ switch语句
谈到枚举类型就不得不提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条件——用以处理错误和意外值——是个好的编程风格。