在下面给出的代码中,为什么||
逻辑不起作用,而是专门在使用&&
时循环终止?
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;
}
答案 0 :(得分:4)
当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
计算为true
Q
select != 'q'
的值为true
select != 'Q'
的值为false
true || false
计算为true
答案 1 :(得分:2)
当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' );
答案 2 :(得分:2)