为什么极大的值会导致此代码无限重复?

时间:2018-12-13 03:32:29

标签: c++

int n;  

do
{
    cout << "What height should the pyramid be? ";
    cin >> n;
} while (n <= 1 || n > 23);

因此,如您所见,它只能取0到24之间的值,这很好用。但是,如果输入一个非常大的值,它将无限重复。有没有一种方法可以防止在输入阶段滥用该信息?

(附带说明,有人知道为什么“ n <0”在这种情况下允许0作为值吗?)

1 个答案:

答案 0 :(得分:1)

如果输入数字太大而无法存储在failbit中,则会设置cin的{​​{1}},然后跟随int总是失败。您可以使用cin >> n清除cin.clear()之前的failbit

cin >> n