在循环条件下使用逻辑运算符

问题描述 投票:2回答:2

在下面给出的代码中,为什么||逻辑不起作用,而是当使用&&时循环特别终止?

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;
}
c++ loops while-loop do-while logical-operators
2个回答
1
投票

此循环将在select不是q时继续进行,并且不是Q

while (select != 'q' && select != 'Q'); 

select不是q的循环将继续进行,不是Q

while (select != 'q' || select != 'Q'); 

由于其中一个必须为真,它将永远持续下去。


0
投票

当选择等于'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' );
© www.soinside.com 2019 - 2024. All rights reserved.