gpt4 book ai didi

c++ - While 循环何时使用 OR 或 AND?

转载 作者:行者123 更新时间:2023-12-04 08:21:15 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





While loop with multiple conditions in C++

(4 个回答)


8 个月前关闭。




我需要帮助解决这个简单的问题。
我开始更多地了解 while 循环,但我不确定我做错了什么。
这是我正在处理的代码片段,所以当我使用 or 时在 while 循环中,循环无限期地执行。但是当我使用 AND循环停止有人可以解释吗?不应该OR根据定义使用?

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();
}
}

最佳答案

您已经说明了您的条件 (option != 'Q' or 'q')就像你说的那样。
“选项不是上 Q 或下 Q”。
编译器将其理解为“option is not upperQ; or q”,其中“q”是非零值。非零值被解释为“真”。所以整个事情总是评估为“真”,总是,即使对于 option具有像“Y”或“2”这样的值。
你必须不那么通俗地改写为
“选项不是'Q',也不是'q'”
并且您必须使用适当的运算符。使用附加 ()确保您的意思被理解不会造成伤害。
这样做是

( (option != 'Q') && (option != 'q') ) 
使用 or ,或者在这种情况下 and而不是逻辑 &&在某些情况下是可能的,并且附加 ()也不是必需的。然而,主要问题是您选择“或”而不是“和”并使用 ()只要您不太熟悉运算符及其在此类表达式中的求值顺序,这是一种安全的方法。
为什么你需要使用 && (“和”)而不是 or||是关于这两个有趣的字母会发生什么的问题。让我们以“Q”为例,它显然是您正在寻找的两个之一。但它不是'q'。所以条件的第二部分为真。与 ||这足够了,整个事情都被评估为“真”,循环继续——显然不是你想要的。 'q' 也是一样的,它不是 'Q',还有 ||继续。
你真正想要的是“都不是”,这与“不是这个和那个”是一样的。因此你需要“非与非”, !a && !b或更直截了本地说 (option != 'Q') && (option != 'q') .
这可以用运算符优先级的隐式知识(查找并尝试记住)重新表述为 option != 'Q' && option != 'q' .

关于c++ - While 循环何时使用 OR 或 AND?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65488589/

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