case语句规范:在每个case后面加一个{},貌似一个编程规范上说过,没注意。
这样加了{}之后如果再改case中需要局部变量就可以在case中声明了。
char c;
std::cin>>c;
switch (c)
{
case 97:
{
int i = 0; //it is right.
std::cout<<c;
break;
}
case 98:
// int j = 0; //it is wrong,cannot define variable here.
std::cout<<c;
break;
default:
printf("%d",c);
break;
}
原理:局部变量的作用域问题,如果上面case 97后面没有{},则 i 的作用域是整个case,如果第一次这些的是case 98并且该case中运用该变量 i 的话就会造成未声明的变量就是用了。所以:整个switch中运用的变量在switch外声明,某个case中运用的变量在case中声明(case后加{}后才可以声明变量)。