📅  最后修改于: 2023-12-03 15:08:48.569000             🧑  作者: Mango
在 C 或 C++ 中,switch 块内只能包含 case 标签和与之对应的语句,不能直接在 switch 块内定义变量或执行其它语句。但是,有时候我们需要在 switch 块内使用变量或执行其它语句。那么该怎么办呢?
下面介绍几种常见的方法。
可以使用代码块来创建一个作用域,从而在 switch 块内定义变量和执行其它语句。示例如下:
switch (n) {
case 1: {
int x = 1;
// do something with x
break;
}
case 2: {
int y = 2;
// do something with y
break;
}
default: {
// do something else
break;
}
}
代码块中定义的变量只在代码块内有效,在代码块外无法访问。
可以使用 goto 语句跳转到一个标签,并在标签后定义变量和执行其它语句。示例如下:
switch (n) {
case 1:
goto label1;
case 2:
goto label2;
default:
goto label3;
}
label1:
int x = 1;
// do something with x
goto end;
label2:
int y = 2;
// do something with y
goto end;
label3:
// do something else
end:
// continue executing after switch block
这种方法使用 goto 语句会使代码变得混乱难懂,不建议使用。
可以在 switch 块外提前声明变量,并在 switch 块内使用。示例如下:
int x, y;
switch (n) {
case 1:
x = 1;
// do something with x
break;
case 2:
y = 2;
// do something with y
break;
default:
// do something else
break;
}
这种方法比较简单易懂,但会使代码变得散乱,不利于维护。
总之,在 switch 块内但在 case 外处理语句的方法有很多,具体采用哪种方法,取决于具体的情况。建议根据实际情况选择合适的方法。