开关的未定义行为

时间:2010-12-08 03:32:02

标签: c

给出以下代码:

#include<stdio.h>
int main()
{
    int a=1;
    switch(a)
    {   int b=20;
        case 1: 
            printf("b is %d\n",b);
            break;
        default:
            printf("b is %d\n",b);
            break;
    }
    return 0;
}

您认为这两个b声明中printf的价值是什么?当然,它不是20。

1 个答案:

答案 0 :(得分:6)

在C ++中,代码格式不正确。案例标签1跨越b的初始化 在C99中它有效但调用未定义的行为。