C++语言程序设计

| 例4-9

switch (operator) {
case '+': result = operand1 + operand2;
break;
case '-': result = operand1 - operand2;
break;
case '*': result = operand1 * operand2;
break;
case '/': result = operand1 / operand2;
break;
default: cout << "unknown operator: " << ch << '\n';
break;
}

从上例我们可以看到：switch语句中的每一个case的结尾通常有一个break语句，它停止switch语句的继续执行，而转向该switch语句的下一个语句。但是，我们有时也有意不加break语句。例如，我们修改上面的例子，以允许x作为乘法运算符，则可将上面的程序修改为：

| 例4-10

switch (operator) {
case '+': result = operand1 + operand2;
break;
case '-': result = operand1 - operand2;
break;
case 'x':
case '*': result = operand1 * operand2;
break;
case '/': result = operand1 / operand2;
break;
default: cout << "unknown operator: " << ch << '\n';
break;
}

因为case 'x'没有break语句，所以case 'x'与case '*'执行相同的语句系列，也就是说，把'x'扩展成为乘法运算符了。
很显然，switch语句可以写成if-else语句的形式。例如，上面的语句，我们可以写为：

| 例4-11

if (operator == '+')
result = operand1 + operand2;
else if (operator == '-')
result = operand1 - operand2;
else if (operator == 'x' || operator == '*')
result = operand1 * operand2;
else if (operator == '/')
result = operand1 / operand2;
else
cout << "unknown operator: " << ch << '\n';

但是，使用switch语句比用if-else语句简洁得多，可读性也好得多。遇到多分支选择的情形，我们应当尽量选用switch语句，避免采用嵌套较深的if-else语句。