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)只要流正常就保持真,如果遇到文件结尾字符或错误cin则变为假。cin

在您的情况下,while(cin)将继续阅读数字,直到遇到EOF字符或错误。Ctrl-D当你没有更多的输入数字时输入,它应该退出while循环

于 2013-10-16T22:06:41.663 回答