中断后无限循环重复(c ++)

时间:2017-09-30 04:43:28

标签: c++ while-loop

我的问题是当用户指示完成后循环中断时,程序开始无限地打印最后一个输入。这里发生了什么?我尝试过使用break,返回0,设置loop = a,所有结果都是一样的。在早期的程序中,我使用了for循环(使用了break),它终止就好了。

注意: 这篇文章用于语法更正,这只是一个片段,代码运行正常,直到我终止环。我想知道是什么导致这种情况发生在特定的while循环中。

编辑:没关系,弄明白发生了什么。当试图结束循环时,有一个数据类型错误(如您所见,我们只接收两个变量的输入,两个变量都是整数),这导致循环开始重复输入的最后一个有效数据类型。所以我的问题是为什么这会发生数据类型错误? `

while (loop != "a")
{
    cout << "Enter the first number: ";
    cin >> input1;
    cout << "\nEnter the second number: ";
    cin >> input2;

    cout << input1 << '\t' << input2 << '\n';

    if (loop == "|")
    {
        break;
    }
}`

2 个答案:

答案 0 :(得分:1)

如果 loop ==“a” loop ==“|”,请根据您的条件在while循环块中更改循环的值然后while循环将被终止。 在给定的代码中,循环的值不会改变,因此循环将运行无限。

我希望你能理解。

答案 1 :(得分:0)

可能是因为您输入错误的数据类型为“cin&#39;”。这使cin失败,并在命令提示符中重复最后一个可接受的值。与循环无关。如果你在循环之外尝试它,你会看到同样的事情发生。

执行以下操作是一种很好的做法:

while (!(cin >> input))
{
    cin.clear();
    cin.ignore(256, '\n');
    cout << "Bad input. Try again: ";
}

所以如果cin失败 - 它将清除失败状态,忽略最后一个输入并要求用户再次输入他的输入。

希望这有帮助