1

これはやばい。次のコードが while ループを終了しない理由を教授に尋ねましたが、教授は教えてくれませんでした。私の理解では、入力ストリームに読み取る値がなくなると、cin は false の値を返し、while ループを終了させるはずです。私はしません。ループを介して入力値(整数のセット)プロセスを読み取り続け、さらに入力を待つようです。誰でも理由を教えてもらえますか? 以下はコードです。

# include <iostream>

using namespace std;

int main()
{
int iEvenSum = 0;
int iOddSum = 0;
int iNum;

// prompt user
cout << "Input any set of integers, separated by a space:\n";
cin >> iNum;
cout << "You input: ";

while (cin)
{
    cout << iNum << " ";

    if (iNum % 2 == 0)
        iEvenSum = iEvenSum + iNum;
    else
        iOddSum = iOddSum + iNum;

    cin >> iNum;
}

cout << "\n\nThe sum of Even numbers is " << iEvenSum << "." << endl;
cout << "The sum of Odd numbers is " << iOddSum << "." << endl;

return 0;

}
4

1 に答える 1

2

while(cin)ストリームが正常である限り true のままであり、ファイルの終わり文字またはエラーが発生したcin場合は false になります。cin

あなたの場合、文字またはエラーが発生while(cin)するまで数字を読み続けます。入力番号がEOFなくなったときに入力すると、ループを終了する必要がありますCtrl-Dwhile

于 2013-10-16T22:06:41.663 に答える