第5章 変数の型宣言


Cでは、変数を関数内で宣言するとき、 この関数の最初の方に宣言しないとエラーになりました。 関数を書いていて、途中で新しい変数が必要になったときは、 関数の最初の方に戻って宣言をしていましたね。 しかし、C++ではその変数が使われる前でしたら どこで宣言してもよいことになっています。 便利なように思えますが、これも少し困った問題が 生じることもあります。具体的なサンプルで説明します。

// わかりやすいエラー #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; }

aやnはwhileループ内で宣言されていますのでその外側では 当然見えません。Cではwhileループ内で 変数を宣言することはありませんでした。 でもこれは、わかりやすい間違いの例ですね。 最後の方の2行(coutを含む行)を消して実行すると次のようになります。

ところで、どうしてnが、static宣言されているか わかりますか?もしわからなければ、 C言語編第29章を見てください。

今度は、少し紛らわしい例です。

これはどうでしょうか。iは一見、forループ内で宣言されているようにも 見えます。しかし、これはループ内での宣言とはなりません。 従って左のソースは問題なくコンパイルできます。

上のプログラムを実行するとこのようになります。 forループの外側でもちゃんとiは見えていますね。


[C++Index] [総合Index] [Previous Chapter] [Next Chapter]

Update Jan/05/1997 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。