C++的一个小程序的运行错误


#include <iostream>
using namespace std;
int main()
{
    int a;
    cout << "你是猪吗?" << endl;
    cout << "如果是,请按1,如果不是,请按2。" << endl;
    while (1)
    {
        cin >> a;
        if (a == 1)
        {
            cout << "没错,你说对了。" << endl;
            break;
        }
        else if (a == 2)
        {
            cout << "不,你说错了!" << endl;
        }
        else cout << "请规范答题!" << endl;
    }
    return 0;
}
    

img

为什么这个程序输入数值时正常运行
而如果我输入字母,就会一直运行,一直显示”请规范答题“

输入字母的时候cin出错,这时候就需要清理
cin >> a;
if (cin.fail())
{
cin.clear();
cin.sync();
cout << "输入不合法,请重新输入";
continue;
}