【发布时间】:2020-04-04 01:19:55
【问题描述】:
在下面给出的代码中,为什么|| 逻辑不起作用,而是在使用&& 时循环终止?
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;
}
【问题讨论】:
-
||将使其始终为真。想想看。它必须始终不等于其中的 一个。 -
它完全按预期工作。
-
考虑这个简单的问题:
'q'是否等同于'Q'?不,不是。因此,如果select != 'q'为false,则意味着select == 'q'必须为true。但是,select != 'Q'肯定不是 true (因为'q' != 'Q')?反之亦然?结果是,在该上下文中使用||可以保证始终为真的整体表达式。事实上,一个体面的编译器会警告你。 -
@WhozCraig:我并不想刻薄。我的评论是这样吗?
-
@FredLarson 不,一点也不。相信我,我无疑是 snarky 的获奖者。实际上试图不成为;你很好。
标签: c++ loops while-loop do-while logical-operators