gpt4 book ai didi

c++ - 使用 && 和 || 有什么区别在 do...while 循环中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:07 26 4
gpt4 key购买 nike

#include<iostream>
using namespace std;

int main()
{

char again;
do
{
cout<<"you are in the while loop";
cout<<"do you want to continue looping?";
cin>>again;
} while (again != 'n' || again != 'N');

system("pause");
return 0;
}

我知道“while”中的测试条件有问题。但我想不通。

当用户的输入既不是 'n' 也不是 'N' 时,循环应该继续打印代码“你在 while 循环中”。一旦按下“n”或“N”,程序将终止。

但是对于我的代码,无论我输入什么字符,程序都会继续循环代码。但是当我改变'||'到'&&',程序可以按需要运行。谁能告诉我这是怎么回事?

最佳答案

这是一个常见的 bool 逻辑问题。 || 表示“或”,意思是“只要其中一侧为真,则表达式为真”。因此,当您将大写字母 'N' 传递给 c != 'n' || c != 'N' 程序说“嗯,'N' 不等于 'n',因此表达式的一侧为真,因此整个表达式是真实的,没有必要检查表达式的其余部分。”即使当您按小写字母 'n' 时,程序也会说“好吧,'n' 等于 'n',但它不等于到 'N',因此表达式的一侧为真,因此整个表达式为真。”这就是您的 while 循环中发生的事情。

另一方面,&&表示“和”,意思是“表达式的两边都必须为真”;当您将大写字母 'N' 传递给 c != 'n' && c != 'N' 时,程序认为“'N'不等于'n',但等于'N',因此表达式只有一侧为真,因此表达式为假。"

这会让人感到困惑,因为如果您要测试输入的字符是否等于特定值,您会使用 ||(例如,“我想知道 'a' or 'b' or 'c' 已输入”)。

基本上,当您对特定表达式使用 || 时,您想要该表达式的反义词,那么您需要更改为 && (例如,我想要'a''b''c' 都不是;或者换句话说,该值不能是 ' a' 并且它不能是'b'并且它不能是'c'” )。同样,如果您要对特定表达式使用 &&,而您想要该表达式的反义词,则需要使用 ||。这是 De Morgan 的其中一个定律,我建议您仔细阅读这些定律,这样您就可以避免自己重新发现每一个定律。

关于c++ - 使用 && 和 || 有什么区别在 do...while 循环中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com