0

这是我的代码:

#include <iostream>
int main(){
    int x;
    int y = 1;
    while(x != y){
        std::cout << "Please, enter 1." << std::endl;
        std::cin >> x;
        try{
            if(x != y){
            throw 2;
           }
        }
        catch(int){
            std::cout << "You didn't enter 1." << std::endl;
        }
    }
    if(x == 1){
        std::cout << "Well done." << std::endl;
    }
    return 0;
}

当我提供 1 作为输入时,它工作得很好,按预期输出消息“做得好”。但是,当我向cin提供任何其他类型的输入时,代码会生成一个循环,无限期地打印出消息“您没有输入 1”。我想知道为什么会这样。

4

1 回答 1

1

在你给出 x 的非整数值后,

cin >> x

cin 进入错误状态,无法进一步阅读。所以循环继续,因为除了包含 cin 的语句之外没有停止。

于 2018-05-23T05:31:21.597 回答