📅  最后修改于: 2023-12-03 14:51:22.284000             🧑  作者: Mango
在C++中,我们可以在switch case语句中使用变量。但是,当我们在一个case中声明并初始化变量时,它只在该case块中有效。在其他case块中访问该变量将导致编译器错误。因此,我们必须在进入第一个case之前声明并初始化变量。有两种方法可以实现这一点。
使用大括号可以创建一个块作用域,从而允许在该块中声明并初始化变量。例如:
switch (i) {
case 1: {
int j = 42;
// do something with j
break;
}
case 2: {
int j = 84; // compiler error! j is already defined in another block
// do something else
break;
}
}
在这个例子中,我们使用了大括号来创建一个块作用域,在每个case块内部声明变量j。在第一个case中声明的j只在该块中有效,不会影响第二个case中的j。
我们可以在switch语句开始之前定义变量,并使用默认初始化。例如:
int j = 0;
switch (i) {
case 1:
j = 42;
// do something with j
break;
case 2:
j = 84;
// do something else with j
break;
}
在这个例子中,我们在switch语句之前定义并初始化了变量j。因为j的作用域跨越了整个switch语句,我们可以在所有的case中使用它。在每个case中,我们可以更改j的值。
无论哪种方法,都可以让我们在switch case语句中初始化变量。选择哪种方法取决于您的个人喜好和程序的要求。