(bool1 && bool2)に遭遇すると、c ++はbool1がfalseであると検出された場合にbool2をチェックしようとしますか、またはPHPがするように無視しますか?
それが質問のあまりに基本的なものである場合は申し訳ありませんが、Schildtでもインターネットでもその言及を見つけることができませんでした。
はい、C++の&&
演算子は 短絡評価 を使用するため、bool1
がfalse
に評価される場合、bool2
を評価する必要はありません。 。
「ショートサーキット評価」とは、Googleで検索してインデックスで検索したい空想用語です。
C++は短絡ロジックを使用するため、bool1
がfalseの場合、bool2
を確認する必要はありません。
これは、bool2が実際にboolを返す関数である場合、またはポインターを使用する場合に便利です。
if ( pointer && pointer->someMethod() )
短絡ロジックがなければ、NULLポインターを逆参照するとクラッシュしますが、短絡ロジックではうまく動作します。
それは正しいです(ショートサーキットの動作)。ただし、注意してください:呼び出された演算子が組み込み演算子ではなく、ユーザー定義のoperator&&
(と同じ operator||
)。
&&
演算子C++の短絡-if bool1
はあなたの例では偽でした、bool2
はチェック/実行されません。
これは短絡評価と呼ばれます (Wikipedia)
&&演算子はC++の短絡演算子であり、bool1がfalseの場合、bool2を評価しません。
短絡評価は、最初の引数で式の値を決定するのに十分でない場合にのみ、2番目の引数が実行または評価される一部のプログラミング言語のブール演算子のセマンティクスを示します。たとえば、ANDの最初の引数関数はfalseと評価され、全体の値はfalseでなければなりません。また、OR関数の最初の引数がtrueと評価される場合、全体の値はtrueでなければなりません。
C++では、&&と||の両方演算子は短絡評価を使用します。
あなたが言及しているのは 短絡評価 です。それはコンパイラ固有のものかもしれないと思ったが、私がリンクした記事はそれを言語固有のものとして示しており、C++はそれに従っている。それが確かにコンパイラ固有のものである場合、私はそれに従わないコンパイラを想像することはできません。私が現時点で使用している日々のコンパイラ、VS 2008はそうしています。基本的には演算子の優先順位に従い、条件結果が保証されるとすぐに、