应用条件语句可以很方便地使程序实现分支,但是出现分支比较多的时候,虽然可以用嵌套的if语句来解决,但是程序结构会显得复杂,甚至凌乱。为方便实现多情况选择,C++提供了一种switch开关语句。
语句格式
switch开关语句格式如下:
switch(表达式)
{
case 常量表达式1:
语句序列1;
break;
case 常量表达式2:
语句序列2;
break;
...
case 常量表达式n:
语句序列n;
break;
default:
语句序列n+1;
}
该语句中可以使用一次或多次case标号,但只能使用一次default标号,或者省略整个default部分;多个case标号也允许使用在同一个语句序列的前面;每个语句标号由保留字case和后面的常量表达式及冒号组成,每个常量表达式通常为字面常量,如常数或字符。
语句执行过程
switch语句执行过程分为以下3步描述。
- 计算出switch后面圆括号内表达式的值,假定为M,若它不是整型,系统将自动舍去其小数部分,只取其整数部分作为结果值。
- 依次计算出每个case后常量表达式的值,假定它们为M1、M2、…,同样,若它们的值不是整型,则自动转换为整型。
- 让M依次同M1、M2、…进行比较,一旦遇到M与某个值相等,则就从对应标号的语句开始执行;在碰不到相等的情况下,若存在default子句,则就执行其冒号后面的语句序列,否则不执行任何操作;当执行到复合语句最后的右花括号时就结束整个switch语句