这条件逻辑可以缩小吗?

时间:2013-09-20 21:46:06

标签: if-statement logic conditional

我正在寻找某人在这里交叉检查我的逻辑。

我在某些代码中遇到了以下格式的条件,并且我认为我可以压缩它,但我想确保我的逻辑没有缺陷。

现有条件如下:

if ((b1 && b2) || (b1 && b2 && !b3))

b1b2b3当然是boolean值。

如果我正确阅读,则以下情况属实:

  • 如果b1 && b2true,则不会考虑rhs条件的or
  • 如果b1 && b2false,则rhs条件的or不能为true

因此,条件的rhs完全没必要,没有任何意义,可以简化为以下内容:

if (b1 && b2)

我的逻辑是真的,还是我错过了什么?

PS>如果有人建议获得更好的头衔,请告诉我。感谢。

1 个答案:

答案 0 :(得分:2)

是的,因为这两个条件都要求b1b2为真:

if ((b1 && b2) // b1 and b2 are true
     ||
    (b1 && b2 && !b3)) //b1 and b2 are true *and* b3 is false

如果b3为真,则满足第一个条件。如果b3为假,则满足第二个条件。因此,b3的值无关紧要。另外,正如您所提到的,如果b1b2为假,则第二个条件甚至不会被评估。

该陈述相当于:

if ((b1 && b2) || (b1 && b2)))

相当于:

if (b1 && b2)