昔の Visual C++ というか cl.exe におもしろいバグがあるそうです。
for (int i = 0; i <10; i++); printf("%d\n", i);
これが動いてしまうそうです。ちゃんと 10 と表示されるとか。わざわざ for 文の中で変数を宣言する意味が無いですね。もしかしたら cl.exe ではブロックの先頭から末尾が新しいスコープになるように設計されているのかもしれません。なんというか機械的に、まぁ、機械であることには違いないんですけど。
これは……
これが僕の中ではC++の仕様だと思っていたのですがバグなんですねorz
そういや確かに2008だとスコープが違っているみたいでコンパイルエラーになってました。
でもC言語の規則に則り、関数の初めでループ用の汎用変数としてiを宣言するという手法を用いることもありました。
>たつにいさん
全部 Microsoft のせいですよ。 彼らは HTML の仕様とかもひっかきまわしてくれました。 でも離れられない Visual Studio … orz
Comments
これは……
これが僕の中ではC++の仕様だと思っていたのですがバグなんですねorz
そういや確かに2008だとスコープが違っているみたいでコンパイルエラーになってました。
でもC言語の規則に則り、関数の初めでループ用の汎用変数としてiを宣言するという手法を用いることもありました。
>たつにいさん
全部 Microsoft のせいですよ。
彼らは HTML の仕様とかもひっかきまわしてくれました。
でも離れられない Visual Studio … orz
Contributions