論理演算子論理 AND () と論理 OR (||) 演算を実行します。
構文
論理 AND 式 :
インクルードまたは式論理 AND 式を 含む式または
論理的または式 :
論理 AND 式論理的または式 || 論理 AND 式
論理演算子は通常の算術変換は行われません。その代わりは 0 に等しいという点では各オペランドが評価されます。論理演算の結果は 0 または 1. です。結果の型は int です。
C: 論理演算子について説明します。
[演算子] |
Description |
|---|---|
&& |
両方のオペランドのゼロ以外の値がの場合論理 AND 演算子。値 1 を生成します。両方のオペランドが 0 と等しい場合結果は 0 になります。論理 AND 演算の 1 番目のオペランドが 0 と等しい場合2 番目のオペランドは評価されません。 |
|| |
論理 OR 演算子はオペランドの含また操作を実行します。結果は両方のオペランドの値が 0 の場合は 0 です。いずれかのオペランドにゼロ以外の値がの場合結果は 1. です。は論理 OR 演算の 1 番目のオペランドにゼロ以外の値がの場合2 番目のオペランドは評価されません。 |
オペランドの論理 AND 演算子と論理 OR 式は左から右に評価されます。1 番目のオペランドの値が操作の結果を決定するために十分である場合は 2 番目のオペランドは評価されません。これが呼び出され「ショートサーキット評価」と呼ばれます。1 番目のオペランドの後でシーケンス ポイントがあります。詳細についてはシーケンス ポイント を参照してください。
例
次の例では論理演算子を示しています :
int w, x, y, z;
if ( x < y && y < z )
printf( "x is less than z\n" );
この例ではメッセージを表示するにはprintf の y がより小さい z である x がより小さい場合は関数 y 呼び出されます。x が y を超える場合2 番目のオペランド (y < z 何も表示されます) は評価されません。2 番目のオペランドがほかの理由に頼られて副作用をもたらしたらこれが問題となる可能性があることに注意してください。
printf( "%d" , (x == w || x == y || x == z) );
この例ではx が wyまたは z と等しい場合printf の関数への 2 番目の引数は true に評価され値 1 が出力されます。それ以外の場合は false になり値 0 が出力されます。1 種類の条件が true と評価されるとすぐに評価が完了したとき。