内部开关案例 - 变量定义相关

时间:2016-11-04 05:33:58

标签: c gcc switch-statement declaration

在这段代码中,为什么我得到i =“一些垃圾值”作为输出?我看到我被宣布但值= 10,未分配。为什么?

main()
{
int a =1;
switch (a)
{
int b = 10;
case 1: printf ("b = %d \n", b);
break;
}

2 个答案:

答案 0 :(得分:3)

b未初始化。分配在交换机的任何情况之外,因此它选择那时堆栈中的任何内容。

答案 1 :(得分:1)

如果你想在case语句中使用变量,正确的方法是:

switch(a)
{
 case 1:
 {
  int b=10; //start a new block scope
  printf("b=%d",b);
 }
 break;
}