作用:
提供了一条可视性好、易于理解的可以选择若干候选项的语句。其作用就像是一个单刀多置开关。
语句基本结构:
switch (expr)
case constexpr1:
break;
case constexpr2:
break;
//其余的候选项
default:
state(n);
运行流程:
第一步:先对关键字switch后面的表达式(可以是一个初始化的变量声明)求值。
第二步:将表达式和case标签匹配,如果与其中一句匹配成功,则开始执行其后的语句块,直至switch结尾或者遇到一条break语句。
第三部:如果没有case与之匹配则跳转到default语句,执行default之后的语句。
理解重难点
在每一个case之后都有一个break语句,则在执行这个case之后就会跳转出去这个switch语句,否则会将这个case之后的所有语句都依次执行。如果希望多个值共享一组操作,则可以故意省略break语句。
定义default不是必须的,但是也可以利用default统计其余的所有情况。
存在这样的一种可能,在case1中国定义了某个变量,但是表达式匹配的时候跳过该条语句,如果其后的case语句块中使用该变量了,则会引起错误。这种情况下在case中定义变量,变量的作用域也仅限于这个case中。在下一个case中需要重新定义
int main() { int a; cin >> a; switch (a) { case 1: { int b = a + 1; cout << a << " " << b << endl; break; } case 2: { int c = a + 1; cout << a << " " << c << endl; break; } default: { break; } } return 0; }