While 循环什么时候使用OR 或AND?
While Loop when to use OR or AND?
我需要帮助解决这个简单的问题。
我开始了解有关 while 循环的更多信息,但我不确定自己做错了什么。
这是我正在处理的代码片段,所以当我在 while 循环中使用 or
时,循环会无限期地执行。但是当我使用 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')
就像你说话一样。
“选项不是 upperQ 或 lowerQ”。
编译器将其理解为“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'
.
我需要帮助解决这个简单的问题。
我开始了解有关 while 循环的更多信息,但我不确定自己做错了什么。
这是我正在处理的代码片段,所以当我在 while 循环中使用 or
时,循环会无限期地执行。但是当我使用 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')
就像你说话一样。
“选项不是 upperQ 或 lowerQ”。
编译器将其理解为“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'
.