0

ここで私のロジックをクロスチェックしてくれる人を探しています。

一部のコードで次の形式の条件を見つけました。これを要約できると考えていますが、ロジックに欠陥がないことを確認したいと考えています。

現状の条件は次のとおりです。

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

b1b2、およびb3はもちろんboolean値です。

私がこれを正しく読んでいる場合、次のことが当てはまります。

  • の場合、条件b1 && b2は考慮されません。truerhsor
  • b1 && b2である場合false、条件の はrhsorはありません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

が true の場合b3、最初の条件が満たされます。b3が false の場合、2 番目の条件が満たされます。したがって、 の値b3は無関係です。さらに、おっしゃったように、またはのいずれb1b2が false の場合、2 番目の条件は評価されません。

このステートメントは次と同等です。

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

これは次と同等です:

if (b1 && b2)
于 2013-09-20T21:49:47.520 に答える