2

私が次のブール値を持っているとしましょう:

  • です
  • isB
  • isC
  • isExistingA
  • isExistingB
  • isExistingC

isA、isB、または isC が true の場合、true bool に対応する isExisting bool もすべて true の場合、何かしたい。isA、isB、または isC が false の場合、対応する isExisting bool は重要ではありません。

これが私が思いついたものです:

if ((isA || isB || isC)
    && ((!isA || isExistingA)
    && (!isB || isExistingB)
    && (!isC || isExistingC)))
{
    // do something
}

どうやら今日は考えられないので、これを表現する簡単な方法があるかどうか疑問に思っていました。

4

2 に答える 2

7

Wolfram Alpha はブール方程式を単純化できます。このリンクを試してください

ただし、私の意見では、これについてあまり心配する必要はありません。簡潔さやパフォーマンスを心配するよりも、if ステートメントをクリーンで読みやすい状態に保つことが重要です。

于 2013-02-13T21:43:51.630 に答える
1

問題は、1つのisX変数のみが真である必要があるが、すべてのisX変数を調べる必要があるという要件です。ですから、「比較」の少ないステートメントを書くことはできないと思います。

あなたの現在の解決策は最短の形式だと思いますが、説明なしでそのコードを読んだ場合、2度見ないと理解できないでしょう(実際の名前はより説明的で、おそらく読者にとってより意味があると思います) 。

于 2013-02-13T21:42:24.823 に答える