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;
    }

while 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) 

は常に false です (そのような数はありません)。

したがって、式全体は常に真の値になります。

于 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 に答える