#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つのライブラリをインポートします。それらは名前空間にあるので、私は怠惰でタイプしたくないのでタイプします。system
iostream
cin
cout
std
using namespace std
std::cout
次に、に初期化nNextID
して0
インクリメントします。20未満の場合は、を出力しますnNextID
。これで関数は終了です。
私はその関数をから呼び出し、プログラムを終了するためにmain
使用します。それで、スペースで区切られた数字の行を期待しているpause
のに、なぜ空白の出力が表示されるのですか?1
20