switch是我们做条件选择的时候经常用到的一个语句,但是最近项目写的代码遇到了问题,代码如下
#includeusing namespace std;
int main()
{
int i;
cout< cin >> i;
switch(i)
{
case 0:
int j = 3;
cout << j
case 4:
case 1:
case 2:
break;
}
return 0;
}
这个时候编译不通过,原因是在case中定义了变量导致的问题,那么如何解决呢?
#includeusing namespace std;
int main()
{
int i;
cout< cin >> i;
switch(i)
{
case 0:
{
int j = 3;
cout << j
}
case 4:
case 1:
case 2:
break;
}
return 0;
}
加上花括号就解决了
原因:case语句在同一个作用域(因为case语句只是标签,他们供述与一个switch语句块),所以在某个case下面声明变量的话,其他case语句也能看到,这样就会导致错误,加上{}的作用就是限定了作用域,让局部变量只在某个作用域有效