スコープ?

最近、仕事ではじめて計算機代数の手法を使った。けっこう有用なのに見たことがない。


すでにいなくなった人のコードでこんなようなのを見た。


#include

int main() {
double a = 1.0;
if(1)
double a = 2.0;

std::cout << a << std::endl; // 1
}

こんなコードでも通るとは知らなかった。少なくともVC8/9では通る。仕様はどうなっているのか知らない。


if(1) {
double a = 2.0;
}

と同じなのだろうか。
当然、このコードに意味は無いが、おそらく書いた人はaは2だと思っているはずだ。