aやnはwhileループ内で宣言されていますのでその外側では 当然見えません。Cではwhileループ内で 変数を宣言することはありませんでした。 でもこれは、わかりやすい間違いの例ですね。 最後の方の2行(coutを含む行)を消して実行すると次のようになります。// わかりやすいエラー #include <iostream.h> int main(void) { cout << "数字を入力してください。" << endl; cout << "0入力で終了します。" << endl; while(1) { int a; static int n = 0; cin >> a; if (a == 0) break; n++; cout << "第" << n << "回の入力は" << a << "です。" << endl; } cout << "n=" << n; //エラー! cout << "a=" << a; //エラー! return 0; }
ところで、どうしてnが、static宣言されているか
わかりますか?もしわからなければ、
C言語編第29章を見てください。
今度は、少し紛らわしい例です。
これはどうでしょうか。iは一見、forループ内で宣言されているようにも
見えます。しかし、これはループ内での宣言とはなりません。
従って左のソースは問題なくコンパイルできます。
上のプログラムを実行するとこのようになります。
forループの外側でもちゃんとiは見えていますね。
Update Jan/05/1997 By Y.Kumei