C++ While循环何时使用或和?

C++ While循环何时使用或和?,c++,loops,while-loop,logical-operators,C++,Loops,While Loop,Logical Operators,这个简单的问题我需要帮助 我开始学习更多关于while循环的知识,我不确定我做错了什么 下面是我正在处理的代码片段,因此当我在while循环中使用或时,循环将无限期执行。但是当我使用和时,循环停止了,有人能解释一下吗?根据定义,不应该使用或 void displayMenu() { char option; while (option != 'Q' or 'q') { //And or OR? cout << "P - Print numbe

这个简单的问题我需要帮助

我开始学习更多关于while循环的知识,我不确定我做错了什么

下面是我正在处理的代码片段,因此当我在while循环中使用
时,循环将无限期执行。但是当我使用
时,循环停止了,有人能解释一下吗?根据定义,不应该使用

void displayMenu() {
    char option;
    while (option != 'Q' or 'q') { //And or OR?
        cout << "P - Print numbers" << endl;
        cout << "A - Add a number" << endl;
        cout << "M - Display mean of the numbers" << endl;
        cout << "S - Display the smallest number" << endl;
        cout << "L - Display the largest number" << endl;
        cout << "Q- Quit" << endl;
        cout << "Choose Your Option-" << endl;
        cin >> option;
        if (option == 'P' or 'p')
            Print();
    }
}
void显示菜单(){
字符选项;
while(选项!='Q'或'Q'){//和或?

你是否已经像你说的那样用措辞表达了你的条件呢?
(选项!=“Q”或“Q”)

“选项不为上限或下限”。
编译器将其理解为“option is not upperQ;or q”,其中“q”是一个非零的东西。非零被解释为“true”。因此,整个东西总是计算为“true”,即使
option
的值为“Y”或“2”

您不必像
“选项不是‘Q’,也不是‘Q’”
你必须使用合适的操作符。使用额外的
()
来确保你的意思被理解不会造成伤害

就这样做了

( (option != 'Q') && (option != 'q') ) 
在某些情况下,可以使用
,或者在本例中使用
代替逻辑
&&
,并且也不需要额外的
()
。但是,主要问题是您选择“或”代替“和”,并使用
()
是一种安全的方法,只要您不太熟悉运算符及其在此类表达式中的求值顺序

为什么您需要使用
&&
(“and”)与
||
不同的是,这两个有趣的字母会发生什么情况。让我们以“Q”为例,它显然是您正在寻找的两个字母之一。但它不是“Q”。因此,条件的第二部分为true。对于
|
,这就足够了,整个事情的计算结果为“true”循环继续-显然不是你想要的。同样的是“q”,它不是“q”,而
|
继续。
你真正想要的是“都不是”,这与“不是这个也不是那个”是一样的。因此你需要“不是”和“不是”、
!a&&!b
或者更直截了当的
(option!='Q')&&(option!='Q')


这可以用操作符优先级的隐含知识(查找并尝试记忆)来表示为
option!='Q'&&option!='Q'

[Anything]或'Q'
始终为真,因为
bool('Q'))是真的。什么使你认为你可以编写代码> x==A或B < /代码>?你从哪里得到的?C++有自己的规则,你最好从标准而不是猜测它们。选项是一个char类型,定义为试图添加一个向量,等等。什么是正确的方法?StEnNOT:从未初始化的代码<阅读>选项
是未定义的行为,例如可能会导致严重后果。您还需要检查逻辑。条件将是
while(选项!=“Q”或选项!=“Q”)
如果我们反转此条件以检查何时退出,您将得到
选项=='Q'和选项=='Q'
,这没有多大意义。@Samgakhyeng请更加小心您的编辑,使其更彻底和完整。