2016-05-22 2 views
-5

短絡評価はコンパイル時間を短縮することができるので、私はC、C++がその方法を使用していることを学びました。しかし、短絡評価がコードを破壊する状況はありますか?プログラマがブール式の短絡評価を避けたいと思われるシナリオはありますか?

+1

短絡評価は言語機能です。したがって、それが動作していないことに依存するコードを書くことは、正しく意図しているとは言えません。 –

+5

いずれかの条件が静的に一定でないと、コンパイル時間を短くすることは考えられません。おそらくランタイムを短縮しますか? –

+2

'の短絡評価はコンパイル時間を短縮することができます。それが使われているわけではありません。 –

答えて

1

短絡によってコードのコンパイル時間が短くなることはありません。 (少なくとも意味のある量で)

実行時間は短くてもかまいませんが、意図した目的ではありません。

短絡の目的は、特定の状態をチェックするために最小限の作業を行うことです。例えば

は:左一方が偽である場合

(単一&とは対照的に)&&を使用して、右のオペランドを評価することはできません。これは、logical andオペレーションの性質によるものです。オペランドの少なくとも1つがfalseの場合、式全体がfalseになります。

技術的には、条件が早期に失敗すると実行時間が短縮されますが、保存された実行時間は各オペランド内の式に依存します。

&&は、&よりも「高速」なので、間違いです。適切な場合は、どちらかを使用する必要があります。

&は、ビット単位の演算に使用されます。

関連する問題