3.2.7 switch语句

switch语句根据一个整型表达式的值从几段代码中选择执行。它的形式是:

3.2.7 switch语句 - 图1

选择器(selector)是一个产生整数值的表达式。switch语句把选择器(selector)的结果和每一个整数值(integral-value)比较。如果发现匹配,就执行对应的语句(简单语句或复合语句)。如果都不匹配,则执行default语句。

读者也许会注意到上面定义中的每一个case后面都以一个break语句作为结束,这个break语句使得执行跳转到switch语句体的结束处(完成switch的闭括号处)。这是建立switch语句的一种常用方式,但是break是可选的。如果省略它,case语句会顺序执行它后面的语句。也就是说,执行后面的各case语句代码,直到遇到一个break语句。尽管一般不需要这种举动,但是对于一个有经验的程序员来说这可能是有用的。

switch语句是一种清晰的实现多路选择的方式(即对不同的执行路径进行选择),但它需要一个能在编译时求得整数值的选择器。例如,如果想使用一个字符串类型的对象作为一个选择器,在switch语句中它是不能用的。对于字符串类型的选择器,必须使用一系列if语句并比较在条件中的字符串。

上面的菜单程序提供了一个特别好的switch语句例子:

3.2.7 switch语句 - 图2

3.2.7 switch语句 - 图3

quit(退出)标志是bool(boolean的简写)型的,这种类型只有在C++中才会看到。它只能有true或false值。选择‘q’即设置quit标志为true。下一次计算选择器的值,quit==false返回false,所以不执行while循环体。