2017-02-10 7 views
0

との条件は、私たちは、私は、イベントの一つ、B、Cをチェックする場合の条件を持っているとしましょう場合は...示すように真であることが:複数のOR句

if(a || b || c || .... || z) 
    do something 

私の質問は、ということです条件cが真であることが分かります。その後、プログラムは条件d〜zを評価するか、「do something」命令を実行することになるか?

+1

は、選択したプログラミング言語に少し依存しますが、ほとんどの場合、最初の真はチェックを中断します – baao

+1

[短絡](https://en.wikipedia.org/wiki/Short-circuit_evaluation) 'ing評価 – birdspider

+0

ちょうどそれをテストする... –

答えて

0

を使用しています。それが真の値に達するまで左から右の各条件を評価します。チェックを中止します。

|を使用すると、結果に関係なくすべての条件が評価されます。

if(a | b | c | .... | z) 
0

int a = b = c = 1があるとします。
++a || ++b;を実行すると、文の後にaが2になります。これは、OR節が条件の1つだけが真である必要があり、bが1のままであるためです。コンパイラは、すでに真です。
ただし、--a || ++bがある場合、aは0と評価され、論理的にはfalseとなります。したがって、他の条件を確認し続けます。bは2になりますが、これは論理的に真です。
何を覚えておく必要がありますか? OR条件のいずれかに該当する場合、コンパイラはさえ、他の条件を評価し続けない

  • コンパイラは
  • 左から右にそれらの条件を評価し、他の場合、それは関係なく、trueになりますです条件が真または偽の場合
  • AND条件では両方の条件が真でなければならないため、最初の条件が偽の場合、式全体が偽であることが保証され、コンパイラは他の条件を評価し続けません。しかし、最初のものが真である場合、コンパイラは他の条件が真であるかどうかをチェックする必要があります。

このすべては、これは短絡評価と呼ばれるhere.

0

クリックし、

短絡評価の詳細については

と呼ばれています。 たとえば、javaは左から順にチェックします。 cが真の場合、残りの部分をチェックしないことを意味します。

しかし、これはすべての言語で当てはまるわけではありません。 たとえば、cshは右から左へ短絡評価を実行します。