重複の可能性:
switchステートメントで変数を宣言できないのはなぜですか?
定義がバイパスされている場合、変数はどのように使用できますか?
#include<stdio.h>
  int main()
  {
      int a=1;
      switch(a)
      {   int b=20;
          case 1: printf("b is %d\n",b);
                  break;
          default:printf("%d\n",b);
                  break;
      }
      return 0;
  }
gcc 4.6.3で実行され、出力は20ではありません。ここで何が起こっているのでしょうか。