[英]C++ infinite loop
我正在嘗試編寫一個循環,該循環將重復進行,直到用戶輸入正確的選項之一(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的值,這可以正常工作,但我對另一個循環為何不起作用感到困惑。
您必須使用&&運算符。
while ((control != 0 ) && (control != 1))
(control != 0) || (control != 1)
等價於
!(control == 0 && control == 1)
但,
(control == 0 && control == 1)
始終為假(沒有這樣的數字)。
因此,整個表達式將始終獲得真正的價值。
突破的唯一途徑
while ((control != 0 )|| (control != 1))
是
!(control != 0) && !(control != 1)
相當於
control == 0 && control == 1
這對於所有整數都是不可能的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.