0

次のように、イベント a、b、c、... のいずれかが true であることを確認する if 条件があるとします。

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

私の質問は、条件 c が真であることが判明したとしましょう。次に、プログラムは条件 d から z を評価しますか、それとも「何かをする」命令の実行に進みますか?

4

3 に答える 3

0

あるとしましょうint a = b = c = 1。式がすでに真であるため、コンパイラーはそれをチェックし続けないため、OR句は真である必要がある条件の1つだけを必要とし、1のままになるため、ステートメントの後に2になり
ます++a || ++b;。ただし、論理的に は0 に評価されます。したがって、他の条件のチェックを続けます:論理的に真である 2 になります。 では、何を覚えておく必要がありますか? ab
--a || ++bafalseb

  • コンパイラはこれらの条件を左から右に評価します
  • OR 条件の 1 つが true の場合、コンパイラは他の条件の評価を続行しません。つまり、他の条件が true か false かに関係なく true になります。
  • AND 条件では両方の条件が true である必要があるため、最初の条件が false の場合、式全体が false であることが保証されるため、コンパイラは他の条件の評価を続行しません。ただし、最初の条件が true の場合、コンパイラは他の条件も true かどうかを確認する必要があります。

これはすべて呼ばれます

短絡評価

詳細については、ここをクリックしてください。

于 2017-02-10T13:20:09.853 に答える