0

我正在尝试编写一个循环,该循环将重复,直到用户输入正确的选择之一(1 或 0)。出于某种原因,当我将循环编写如下时,它会创建一个无限循环。

我打算让循环只在控制不是 0 或不是 1 时执行,但由于某种原因,它总是会执行并变成一个无限循环。

cout<<"Please enter 1 for another customer or 0 to quit : ";
cin>>control;

  while ((control != 0 )|| (control != 1))
    { 
      cout<<"Invalid Entry! Please enter a 1 to enter another customer or 0 to quit: ";
      cin>>control;
    }

我将其更改为同时控制小于 0 或大于 1,这有效,但我仍然对为什么另一个循环不起作用感到困惑。

4

3 回答 3

4

您必须使用 && 运算符。

while ((control != 0 ) && (control != 1))
于 2013-11-11T02:39:01.010 回答
2
(control != 0) || (control != 1)

相当于,

!(control == 0 && control == 1)

但,

(control == 0 && control == 1) 

总是假的(没有这样的数字)。

因此,整个表达式总是会得到真值。

于 2013-11-11T04:07:57.820 回答
1

破局的唯一方法

while ((control != 0 )|| (control != 1))

!(control != 0) && !(control != 1)

这相当于

control == 0 && control == 1

这对所有整数都是不可能的。

于 2013-11-11T02:39:35.880 回答