大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

[C言語入門] 演算子の使い方(14)

著者:高木信尚
公開日:2018/12/20
最終更新日:2018/12/20
カテゴリー:技術情報

高木です。こんばんは。

このネタもかなり長引いていますので、できることなら年内に決着を付けたいと考えています。
今年も残りわずかですので、これまでよりはピッチを上げて書いていくことにします。

今回は論理演算子について解説します。
残るは、条件演算子、代入演算子、コンマ演算子です。
それぞれ1回ずつで解説するとして、単純計算すれば今回を除いてあと3回で終わりそうです。

それでは、早速今回の解説に入りましょう。

論理AND演算子

論理AND演算子は論理積の演算を行う演算子で、&&を用います。
<iso646.h>ヘッダで定義されるandマクロも論理AND演算子を表します。

論理AND演算子のオペランドは両方ともスカラ型でなければなりません。
スカラ型は算術型とポインタ型の総称です。
各オペランドがゼロに評価される場合は偽、ゼロ以外に評価される場合は真として、論理積を求めます。
評価結果はint型の0または1になります。

ビット単位の論理AND演算子とは異なり、左→右の順にオペランドを評価することが保証されています。
また、左オペランドの評価直後は「副作用完了点(sequence point)」になります。
「副作用完了点」についての解説は今回は省略しますので、興味のある方は自分で調べてみてください。

左オペランドの評価結果が偽の場合、右オペランドは評価されません。
これを「短絡評価」と呼びます。

論理OR演算子

論理OR演算子は論理和の演算を行う演算子で、||を用います。
<iso646.h>ヘッダで定義されるorマクロも論理AND演算子を表します。

論理OR演算子のオペランドは両方ともスカラ型でなければなりません。
スカラ型は算術型とポインタ型の総称です。
各オペランドがゼロに評価される場合は偽、ゼロ以外に評価される場合は真として、論理和を求めます。
評価結果はint型の0または1になります。

ビット単位の論理OR演算子とは異なり、左→右の順にオペランドを評価することが保証されています。
また、左オペランドの評価直後は「副作用完了点」になります。

論理AND演算子と同様、論理OR演算子でも「短絡評価」が行われます。
左オペランドの評価結果が真の場合、右オペランドは評価されません。


ビット単位の演算子には排他OR演算子(^演算子)がありましたが、論理排他OR演算子というのは存在しません。
左右のオペランドが異なる場合に真になるのは!=演算子が相当します。
また、排他ORを求めるには、どちらか一方のオペランドだけでは評価結果が確定しませんので、「短絡評価」を行うことができません。

    次の記事 :
    上に戻る