C++ 使用&&;和| |在do…while循环中? #包括 使用名称空间std; int main() { 再次烧焦; 做 { cout

C++ 使用&&;和| |在do…while循环中? #包括 使用名称空间std; int main() { 再次烧焦; 做 { cout,c++,boolean-logic,C++,Boolean Logic,是:|是“或”和&&是“和” 每个字符不是“n”就是“n”,因为它不可能同时是“n”和“n” 另一种(可能更简单)编写条件的方法是: #include<iostream> using namespace std; int main() { char again; do { cout<<"you are in the while loop"; cout<<"do you want to continue

是:|是“或”和&&是“和”

每个字符不是“n”就是“n”,因为它不可能同时是“n”和“n”

另一种(可能更简单)编写条件的方法是:

#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;
}
这意味着“与(同样是'n'或'n')相反。”

是:| | is“或”and&&is“and”

每个字符不是“n”就是“n”,因为它不可能同时是“n”和“n”

另一种(可能更简单)编写条件的方法是:

#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;
}
这意味着“的对立面(同样是'n'或'n')”

&&是一个逻辑AND。 ||是逻辑OR

(同时,&是位AND,|是位OR。)

&&是逻辑AND。 ||是逻辑OR


(还有,&是位AND,|是位OR。)

你可能想试试while(!(再次='n'|再次='n'))

你可能想试试while(!(再次='n'|再次='n'))

这是一个常见的布尔逻辑问题。
的意思是“或”,意思是“只要这一方面是真的,那么表达式就是真的。”因此,当您将大写字母
'N'
传递给
c!='N'| c!='N'
时,程序会说:“嗯,
'N'
不等于
'N'
,因此表达式的一侧为真,因此整个表达式为真,无需检查表达式的其余部分。”即使按小写字母
'n'
,程序也会说“嗯,
'n'
等于
'n'
,但它不等于
'n'
,因此表达式的一侧为真,因此整个表达式为真。”这就是while循环中发生的情况

另一方面,
&
表示“和”,这意味着“表达式的两边都必须为真”;当您将大写的
'N'
传递给
c!='N'&&c!='N'
时,程序会思考
'N'
不等于
'N'
,但它等于
'N'
,因此表达式只有一侧为真,因此表达式为假

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


基本上,当您将
|
用于特定表达式,并且希望与该表达式相反时,您需要更改为
&&
(例如,我不想要
'a'
'b'
'c'
;或者换句话说,值不能是
'a'
'b'
'c')类似地,如果你想对一个特定的表达式使用
&&
,并且你想使用与该表达式相反的表达式,那么你需要使用
|
。这是德摩根定律之一,我建议你仔细阅读,这样你就可以避免自己重新发现每一个定律。

这是一个常见的布尔逻辑问题。
||
的意思是“或”,意思是“只要有一个方面是真的,那么表达式就是真的。”所以当你把一个大写的
'N'
传递给
c!='N'| c!='N'
程序会说“嗯,
'N'
不等于
'N'
,因此表达式的一侧为真,因此整个表达式为真,无需检查表达式的其余部分。”即使按小写字母
'N'
,程序也会说”嗯,
'n'
等于
'n'
,但它不等于
'n'
,因此表达式的一侧为真,因此整个表达式为真。”这就是while循环中发生的情况

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

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


基本上,当您将
|
用于特定表达式,并且希望与该表达式相反时,您需要更改为
&&
(例如,我不想要
'a'
'b'
'c'
;或者换句话说,值不能是
'a'
'b'
'c')类似地,如果你想对一个特定的表达式使用
&&
,并且你想要与该表达式相反的表达式,那么你需要使用
|
。这是德摩根定律之一,我建议你仔细阅读,这样你就可以避免自己重新发现每一个定律。

这是一个称为“”的布尔代数

在您的情况下,您希望用户不要输入
'n'
'n'
,可以将其转换为此逻辑

Not (P And Q) = (Not P) Or (Not Q)
Not (P Or Q) = (Not P) And (Not Q)
当应用德摩根定律时,它将是

!(again == 'n' || again == 'N')

有关详细信息,您可能需要阅读

这是一个名为“”的布尔代数

在您的情况下,您希望用户不要输入
'n'
'n'
,可以将其转换为此逻辑

Not (P And Q) = (Not P) Or (Not Q)
Not (P Or Q) = (Not P) And (Not Q)
当应用德摩根定律时,它将是

!(again == 'n' || again == 'N')

要了解更多信息,您可能需要阅读

虽然原始海报现在很高兴,但我在其他答案中没有看到这一点