switch 语句
语法
- switch ( 表达式 ) { 分支列表1 }
注释:
描述
switch 语句用于基于一个表达式的值,在多个分支中选择一个进行执行。每个分支由一个 case 标签和一个语句列表组成。 case 标签后跟一个常
量表达式,当 switch 表达式的值与某个 case 标签的值匹配时,执行对应的语句列表。 如果没有任何 case 标签匹配,且存在 default 标签,
则执行 default 标签后的语句列表。
switch 语句的执行流程如下:
- 计算
switch表达式的值。 - 依次检查每个
case标签的值,寻找与switch表达式值匹配的标签。 - 如果找到匹配的
case标签,执行该标签后的语句列表,直到遇到break语句或switch语句结束。 - 如果没有找到匹配的
case标签,且存在default标签,执行default标签后的语句列表。 - 如果没有匹配的
case标签且没有default标签,switch语句不执行任何操作。
如果在某个 case 标签下的语句中,没有使用 break 或其他跳转语句,程序将继续执行后续语句——即便这些语句属于下一个 case 标签或 default 标签。
这种行为称为 fall-through,在某些情况下可能是有意为之,但也可能导致意外的逻 辑错误。因此,建议在每个 case 标签的语句列表末尾使用 break 语句,
除非明确希望实现 fall-through 行为。
示例
int value = 2;
switch (value)
{
case 1:
writeln("Value is 1");
break;
case 2:
writeln("Value is 2");
// 注意这里没有 break,程序会继续执行下一个 case
case 3:
writeln("Value is 3 or fell through from case 2");
break;
default:
writeln("Value is something else");
}