为什么我的 while 循环会导致无限输出

Why my while loop causes infinite output

本文关键字:无限 输出 我的 while 循环 为什么      更新时间:2023-10-16

我正在尝试构建一个包含 while 循环的小程序:

int main() {
    int x = 0;
    int y = 0;
    while (x != '|' || y != '|') {
        cout << "Please enter two numbers: n";
        cin >> x >> y;
        cout << "You entered: " << x << " and " << y << "nn" << endl;
    }
    return 0;
}

我在带有Visual Studio和Linux的Windows盒子上编译并运行,当中断要求被填满时,我的终端/cmd像无限循环一样无限填充。我在很多地方搜索过,找不到明确的答案。我尝试使 while 无限并将 break 参数放入其中无济于事。我有一种感觉,这与将垂直符号放在整数中有关,但是我已经有了运行良好的循环。我正在上课要求它,我有"可以"的解决方法,但想知道一种干净/标准的方法。

无限循环是因为您从不检查输入失败。在该行之后cin >> x >> y添加:

if ( !cin )
    break;

请记住,xy是整数,因此它们只能存储数字。当您编写x != '|'时,您正在测试此人是否成功输入了与 | 的 ASCII 字符代码匹配的数字。 如果您希望能够检查人员输入的每个字符,请改为输入string