KID's World
 

おしながき
トップページ
プログラミング
研究
いんすぴ
色日記
ソフトウェア
KID's Worldの歴史
リンク
小出俊夫について


質問と回答:初期化文での変数宣言はなぜ控えるべきか (p.111)

 

質問

くらさんからの質問です。

御著「入門C++プログラミング」に対する質問です。

p.111:9-8 「初期化文の部分でカウンタ用の変数iを宣言するのです。ただ
し、このようにしてしまうと、for文の後で変数iを利用することができなくなってし
まいます。ですので、特に理由がなければ、初期化文の部分で変数を宣言するのは控
えたほうがよいでしょう。」とありますが、不都合になるのはどのような場合である
か、実例でお示しいただけますでしょうか。

 

回答

for文で利用したカウンタ用の変数を、for文の外で使いたくなるという状況にはかなりの確率で出くわすはずです。たとえば、ある条件でbreak文を実行してfor文を抜けたとき、どの時点で抜けたのかを知るために、その変数の値を知る必要がある場合、などです。この場合はfor文の外でその変数を宣言することですぐに解決できます。

また、深刻なのは、同ページの「NOTE」で触れているように、コンパイラによってはfor文の初期化文での変数宣言の解釈が異なっている場合があるということです。たとえば、for文の外でも初期化文で宣言した変数が使えるコンパイラを使っている人が、

#include <iostream>
using namespace std;

void main()
{
  for(int i=0; i<10; i++)
    cout << "test\n";

  cout << i;
}
と書いてしまうと、それを他の人に渡したときに、別のコンパイラでコンパイルできない場合が出てきてしまうことがあります。なお、CD-ROMに収録されているBorland C++5.5.1では、このプログラムはコンパイルできません。このような不要なトラブルを防ぐためにも、初期化文で変数宣言はしないほうがよいでしょう。

 著作権は全て小出 俊夫にあります。KID's World © 1996-2003 Toshio Koide.

 対応ブラウザについて