在这段代码中,为什么我得到i =“一些垃圾值”作为输出?我看到我被宣布但值= 10,未分配。为什么?
main()
{
int a =1;
switch (a)
{
int b = 10;
case 1: printf ("b = %d \n", b);
break;
}
答案 0 :(得分:3)
b未初始化。分配在交换机的任何情况之外,因此它选择那时堆栈中的任何内容。
答案 1 :(得分:1)
如果你想在case语句中使用变量,正确的方法是:
switch(a)
{
case 1:
{
int b=10; //start a new block scope
printf("b=%d",b);
}
break;
}