0

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

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

目前的条件如下:

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

其中b1,b2b3boolean当然的值。

如果我没看错的话,以下是正确的:

  • 如果b1 && b2true则不rhs考虑or条件的。
  • If b1 && b2is falsethen the rhscondition orcan be true

因此,rhs条件的 是完全没有必要的,也没有任何意义,它可以浓缩为以下内容:

if (b1 && b2)

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

PS>如果有人对更好的标题有建议,请告诉我。谢谢。

4

1 回答 1

2

是的,因为这两个条件都需要b1并且b2为真:

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)
于 2013-09-20T21:49:47.520 回答