25

このステートメントに相当するものは何ですか?

if(cond1 AND cond2 AND cond3 OR cond4 AND cond5 AND cond6)

それは...ですか

if((cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond6))

または

if(cond1 AND cond2 AND (cond3 OR cond4) AND cond5 AND cond6)

または

if(((cond1 AND cond2 AND cond3) OR cond4) AND cond5 AND cond6)

など...

これは、私が近づくのをいつも怖がらせてきたものであり、条件を括弧で囲んでいます( ). 心が整理できたら最高です。

4

5 に答える 5

55

これを覚える良い方法は、数学的に考えることです。

  • ANDas *(乗算)
  • ORとして+(追加)
  • TRUEなので1
  • FALSEなので0

これを単純な計算として考えると、次のようになります。

  • 0 * 0 = 0
  • 1 * 0 = 0
  • 1 * 1 = 1
  • 0 + 0 = 0
  • 1 + 0 = 1
  • 1 + 1 = 1

少し混乱するかもしれない唯一のものは です1 + 1 = 1が、少し上に行くことはできません11しかし、 0 以外の任意の数値と考えると理にかなっています。

したがって、これを念頭に置いて、次のロジックを適用できます。

if(cond1 AND cond2 AND cond3 OR cond4 AND cond5 AND cond6)

なる:

if(cond1 * cond2 * cond3 + cond4 * cond5 * cond6)

参照: https://en.wikipedia.org/wiki/Order_of_operations

于 2017-01-19T08:58:24.290 に答える
18

ほとんどの言語ANDでは、最初に評価されるため、

if((cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond 6))

は正しい選択です。

C# については、http://msdn.microsoft.com/en-us/library/aa691323%28v=vs.71%29.aspxを参照してください。

C については、http://en.cppreference.com/w/cpp/language/operator_precedenceを参照してください。

Java については、http://bmanolov.free.fr/javaoperators.phpを参照してください。

于 2013-05-29T04:47:37.130 に答える
3

ブール接続詞の通常のセットでは (論理的な観点から),andは よりも優先順位が高いorため、A or B and C実際にはA or (B and C). ウィキペディアはそれらを順番にリストしています。ほとんどのプログラミング言語は、本当に変な場合を除き、この規則に従うべきです。

とはいえ、あなたの特定の言語や環境では、それがいずれかの方法であることを満足させるために非常に小さなテストを作成することが可能であるはずです:)

于 2013-05-29T04:46:09.413 に答える