这是我的代码:
#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”的消息。我想知道为什么会这样。
答案 0 :(得分:1)
给出x的非整数值后,
cin >> x
cin进入错误状态,无法进一步阅读..所以循环继续,因为除了包含cin的语句之外没有停止。