我在 case 语句之外声明了一个变量。但如果我在一个案例中打印它的值,它会显示 0。有人能解释一下吗?
令人困惑的是为什么采用声明部分(int b,否则, undefined variable 的编译错误)以及为什么不初始化?
我无法获得标记为重复的问题的答案,因此发布了这篇文章。
main()
{
int a=1;
switch(a)
{
int b = 6;
case 1:
{
printf("b is %d\n",b);
}
break;
default:printf("b is %d in default\n",a);
break;
}
return 0;
}
最佳答案
变量 init 可以翻译为
int b;
b = 6;
该 case 的作用就像一个 goto,当遇到 switch 时会跳到那里。因此,您直接跳过 b = 6
行到 printf
,这使得 b
的值未定义。
关于c - 在 case 外部声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969671/