char输入使循环不会在C ++中停止

时间:2016-01-30 18:04:14

标签: c++ loops

C ++程序如下

#include <iostream>

using namespace std;

int main(void) {
    /* temporary storage for the incoming numbers */
    int number;

    /* we will store the currently greatest number here */
    int max = -100000;

    /* get the first value */
    cin >> number;

    /* if the number is not equal to -1 we will continue */
    while(number != -1) {

        /* is the number greater than max? */
        if(number > max)

            /* yes – update max */
            max = number;

        /* get next numbet */
        cin >> number;
    }

    /* print the largest number */
    cout << "The largest number is " << max << endl;

    /* finish the program successfully */
    return 0;
} 

如果我输入一些号码,例如69 10 -1。它会工作。 但是当我输入一些字符时,即使我输入-1,它也没有停止。 例如a a -1 -1 -1 为什么呢?

2 个答案:

答案 0 :(得分:2)

每次读取后都需要检查流状态。

字母a不是正确的十进制数字,因此输入失败。当输入失败时,它会设置一个失败位,导致所有后续输入失败或不发生。

读取变量后,请务必检查输入状态。

如果要继续,恢复状态为clear

答案 1 :(得分:1)

因为您希望将输入语句作为while条件,例如:

while (cin >> number) {

    if(number == -1)
        break;

    if (number > max)
        /* yes – update max */
        max = number;
}