在switch语句中声明的变量如何工作?

时间:2018-01-15 04:20:09

标签: c variables switch-statement

代码:

#include <stdio.h>

int main (void)
{
    int a = 1;

    switch(a) {
        int t= 4;
    case 1:
        printf("%d", t);
        break;
    default: //Does not mean anything just for clarity
        break;
    }
}

C11 gcc中的结果: 1

问题:为什么这有效?是不是编译器应该给出错误? 如果a为1,那么它是否应该跳到案例1?为什么打印1?

1 个答案:

答案 0 :(得分:2)

t已在当前范围内声明,因此没有理由出错。 现在,你永远不会在任何标签之前进行初始化,因此它可以有任何价值。令我困惑的是,如果有任何理由它巧合等于1。