异常基础:为什么while循环变成无限循环?

时间:2018-05-23 04:33:21

标签: c++ loops while-loop

这是我的代码:

#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”的消息。我想知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

给出x的非整数值后,

cin >> x

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