main()
{
 int*p;
 if(1)
 {
  int x; = 3;
  p = &x;
 }
 printf("%d", *p);
}

xがスコープから外れてるので使えないと思ったのですが
vc2003だと 3 と出力されました。
これの出力はどのコンパイラでも 3 になりますか?
それとも実装や状況に依存しますか?