【问题标题】:How to handle multiple OR condition in IF [closed]如何在 IF 中处理多个 OR 条件 [关闭]
【发布时间】:2017-11-14 17:57:34
【问题描述】:
bool A=false;
bool B=true;

if(!A || !B)
{
.....
}

在这种情况下,当 A 为真时,它没有检查 B 但我想检查 B 而不是 A 。

在这种情况下,如果任何一个为真(A 或 B),我想执行,但如果 A 为真,我也想检查 B。除了使用不同的 if 条件之外,还有其他逻辑可以解决这个问题吗?

【问题讨论】:

  • if(A || B) ??
  • But If A is true I want to check B 你的意思是if ( A && B )if ( A && !B )。但是,我不确定,不清楚您要达到的目标。
  • 不确定您所说的“但如果 A 为真,我也想检查 B”是什么意思,您能否制作所有结果的真值表?
  • 你知道OR 是什么吗?每当达到TRUE 时,检查就会停止...
  • B 的值是短路的当且仅当它对条件没有影响。因此,评估是没有意义的,除非 B 本身有任何副作用(也就是说,如果 B 不是布尔值,而是可以对程序状态产生影响的表达式)。

标签: c++ logic conditional-statements


【解决方案1】:

您可以在编译器中关闭短路评估。如果您使用自己的类型,您可能会重载||&&。重载的逻辑运算符不会短路。

这两件事都非常糟糕。程序员期望逻辑运算符以某种方式运行,并且很可能对这种意外行为感到非常困惑。你应该坚持短路。

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 2017-01-27
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2021-09-06
    • 2019-03-01
    相关资源
    最近更新 更多