no-image

forの初期化時に宣言した変数のスコープの解釈の違いについて

http://onjn.nomaki.jp/の2005.11.14の日記より

VC6と2005では、forの初期化式で宣言した変数のスコープが異なります。

たぶん、2005が正しいのだと思う。

for(int i = 0; i < 10; i++) {

printf("%d\n", i);

}

printf("%d\n", i);

これは6ではコンパイル通りますが、2005ではi が宣言されていないということで最後の行がエラーになります。

ふむふむ。というわけで早速手元のVC++ 2003 Tookit + Platform SDKな環境でやってみた。

ら、

0

1

2

3

4

5

6

7

8

9

10

う、うごくのね、、

気持ち的には動かないでほしい。ので2005での変更は素敵。ELFたんの話しによるとANSI-C++的にも通らない方が正しいとか。