Cプログラミング入門

第11回Chapter 4 計算してみよう(3)

さまざまな演算子(その2)

比較演算子

比較演算子には次のような種類があります。これらはおもに後述のif文の制御式やfor文、while文の継続条件式として使用されます。

不等号演算子< <= > >=
等非等号演算子== !=

A < BAがBより小さければ真
A <= BAがB以下ならば真
A > BAがBより大きければ真
A >= BAがB以上ならば真
A == BAがBに等しければ真
A != BAがBに等しくなければ真

C言語では比較演算子もあくまで演算子であり、その演算結果は真ならば1、偽ならば0という値になります。 たとえば、⁠5 > 3」という演算を行うと、その演算結果は1になり、⁠8 <= 3」という演算を行なと、その演算結果は0になります。

論理関係演算子

論理関係演算子には次のような種類があります。これらはおもに、前述の比較演算子と組み合わせて、同様に後述のif文の制御式やfor文、while文の継続条件式として使用されます。

論理AND演算子&&
論理OR演算子¦¦
否定演算子!

A && BAが真かつBが真ならば真
A ¦¦ BAが真またはBが真ならば真
!A Aが偽ならば真

ビット論理演算子

値を2進数として考え、ビットごとのAND/OR/XOR/NOTの演算を行うには、ビット論理演算子を用います。ビット論理演算子には次の種類があります。

ビットAND演算子&
ビットOR演算子¦
ビットXOR演算子^
ビットNOT演算子~

ビット論理演算子の中のビットAND演算子(&)やビットOR演算子(¦)は、論理関係演算子の中の論理AND演算子(&&)や論理OR演算子(¦¦)とは異なるため、混同しないように注意してください。

演算子の優先順位

C言語には、これまで見てきた演算子のほか、C言語特有の演算子を含めて多数の演算子があります(表4.1)

これらの演算子には優先順位があり、優先順位の高い順に演算が行われます。ただし、この演算子の優先順位は多少複雑で覚えにくいところがあるため、複雑な演算の場合は、演算子の優先順位に頼らずに、明示的に括弧を使って、演算順序がわかりやすいようにプログラムを記述するとよいでしょう。

表4.1 演算子の優先順位
() [] . -> var++ var--
++var --var ! ~ +(符号) -(符号) *(ポインタ) &(アドレス) sizeof
(int)(キャスト)
*(乗算) / %
+(加算) -(減算)
<< >>
< <= > >=
== !=
&(ビットAND)
^(ビットXOR)
¦
&&
¦¦
? :
= += -= *= /= %= <<= >>= &= ^= ¦=
,(順次演算子)
+ - * & は、同じ記号が文脈によって別の演算子として使用されているので注意

おすすめ記事

記事・ニュース一覧