C语言--case语句加{}

switch是我们做条件选择的时候经常用到的一个语句,但是最近项目写的代码遇到了问题,代码如下

#include
using namespace std;
int main()
{
        int i;
        cout<<"please input the value of  i ---(0-9)"<         cin >> i;
        switch(i)
        {
                case 0:
                        int j = 3;
                        cout << j <                         break;
                case 4:
                case 1:
                case 2:
                        break;
        }
        return 0;
}

这个时候编译不通过,原因是在case中定义了变量导致的问题,那么如何解决呢?

#include
using namespace std;
int main()
{
        int i;
        cout<<"please input the value of  i ---(0-9)"<         cin >> i;
        switch(i)
        {
                case 0:
                { 

                       int j = 3;
                        cout << j <                         break;

               }
                case 4:
                case 1:
                case 2:
                        break;
        }
        return 0;
}

加上花括号就解决了

原因:case语句在同一个作用域(因为case语句只是标签,他们供述与一个switch语句块),所以在某个case下面声明变量的话,其他case语句也能看到,这样就会导致错误,加上{}的作用就是限定了作用域,让局部变量只在某个作用域有效

你可能感兴趣的:(C语言--case语句加{})