#include <cstdlib>
#include <iostream>
int GenerateID()
{
using namespace std;
static int nNextID = 0;
nNextID++;
if (nNextID <= 20)
cout << nNextID << endl;
}
int main()
{
int GenerateID();
system("pause");
}
上記のプログラムが実行されないのはなぜですか?このプログラムで1から20までのコンソール番号を生成したいと思います。
実際、プログラムは実行されています。ただし、プログラムは出力を生成していません。出力は、スペースで区切られた1行の数字1になると思います。20空白、つまり出力がないことを確認します。
プログラムはクラッシュしません。コンパイラのエラーや警告はありません。実際、プログラムのウォークスルーは次のとおりです。
入力オブジェクトと出力オブジェクト、およびをそれぞれcstdlib使用してシステムコマンドを実行するために、2つのライブラリをインポートします。それらは名前空間にあるので、私は怠惰でタイプしたくないのでタイプします。systemiostreamcincoutstdusing namespace stdstd::cout
次に、に初期化nNextIDして0インクリメントします。20未満の場合は、を出力しますnNextID。これで関数は終了です。
私はその関数をから呼び出し、プログラムを終了するためにmain使用します。それで、スペースで区切られた数字の行を期待しているpauseのに、なぜ空白の出力が表示されるのですか?120