C/C++ - switch

在C/C++语言中, switch 语句的通用格式为

1: switch (int_expr)
2: {
3:         case label1: statement(s)
4:         case label2: statement(s)
5:         ...
6:         default: statement(s)
7: }

顾名思义, int_expr 必须是一个结果为整数值的表达式。另外,每个标签都必须是整数常量表达式。最常见的标签是 intchar 常量(如1或‘a’),也可以是枚举常量。C++中的 case 标签只是行标签,而不是选项之间的界限。也就是说,程序跳到 switch 中特定代码后,将依次执行之后的所有语句,除非有明确的其他指示。程序不会执行到下一个 case 处自动停止,要让程序执行完一组特定语句后停止,必须使用 break 语句。这将导致程序跳到 switch 后面的语句处执行。

关于将枚举量用作标签,通常, cin 无法识别枚举类型(它不知道程序员是如何定义它们的),因此程序要求用户选择选项时输入整数。当 switch 语句将 int 值和枚举量标签进行比较时,将枚举量提升为 int 。另外,在 while 循环测试条件中,也会将枚举量提升为 int 类型。