C语⾔关于使⽤switch的注意事项
switch case语句中,是不能直接在某⼀个case语句中直接定义⼀个变量
例如:
switch (a) {
case'a':
int a=10;
Node *node=(Node *)malloc(sizeof(Node));
break;
default:
break;
}
这个地⽅定义⼀个变量或者是⼀个结构体变量都是不被允许的
这⾥举⼀个很明显的例⼦:
switch (a) {
case1:
int num=2;
break;
case2:
printf("%d\t",num);
break;
switch case判断字符串default:
break;
}
当a的值取为2的时候,case1中的num是对case2可见的,类似于java中的public,但是你在使⽤case2的情况的时候,编译器会检测到由于没有执⾏case1导致的num未经过初始化⽽在case2中打印⽽报错,故编译器会在编译阶段就禁⽌这种在case⾥⾯定义新函数的⾏为
解决这个的办法针对不同的编译器的通⽤解决办法就是在switch之外定义⼀个num变量。
或者加上⼀个⼤括号:
switch (a)
{
case1:
{
int num=2;
break;
}
default:
break;
}
将变量的⽣命周期限制在⼀定的范围⾥⾯就可以解决这个问题。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。