switch中的问题是
switch()
{
case 1:break;
case 2:
}
1和2是在同一块作用域中
一旦在case 1中初始化了一个变量,但是却执行case 2的标签,case 2使用了ase 1的变量,但是执行case 2会略过case 1的初始化,造成使用未初始化的值
用户可能会这么写
int i=1;
switch(i)
{
case 1:
int j=4;
case 2:
i=j;
}
如果能使用初始化用户可能会希望执行case 1并在case 2给i赋值,一旦执行case 2会产生令人糟糕的事情
int i=3;
switch(i)
{
case 1:
int j;
case 3:
j=1;
printf("%d",j);
}
这样就不会发生使用未定义的对象,因为用户必须在使用此对象之前定义