[英]Use of Logical Operator in Loop Condition
在下面給出的代碼中,為什么||
邏輯不起作用,而是循環在使用&&
時特別終止?
int main() {
char select {};
do {
cout<<"Continue the loop or else quit ? (Y/Q): ";
cin>>select;
} while (select != 'q' && select != 'Q'); // <--- why || (or) doesn't work here ??
return 0;
}
這個循環將繼續下去,而select
不q
,它不是Q
:
while (select != 'q' && select != 'Q');
當select
不是q
或它不是Q
這個循環將繼續。
while (select != 'q' || select != 'Q');
既然其中之一必須是真的,它就會永遠持續下去。
例子:
q
select != 'q'
計算結果為false
select != 'Q'
評估為true
false || true
false || true
評估為true
Q
select != 'q'
計算結果為true
select != 'Q'
評估為false
true || false
true || false
評估為true
您希望在 select 等於'q'
或'Q'
時終止循環。
相反的條件可以寫成
do {
cout<<"Continue the loop or else quit ? (Y/Q): ";
cin>>select;
} while ( not ( select == 'q' || select == 'Q' ) );
如果打開括號,那么你會得到
do {
cout<<"Continue the loop or else quit ? (Y/Q): ";
cin>>select;
} while ( not( select == 'q' ) && not ( select == 'Q' ) );
這又相當於
do {
cout<<"Continue the loop or else quit ? (Y/Q): ";
cin>>select;
} while ( select != 'q' && select != 'Q' );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.