5.2 条件記述

条件判定部分には以下のような記述ができます。

==,!=,>,< などの関係演算子

数値などの大小比較について以下のような演算子が利用できます。

演算子意味利用例
==等しいif (a==b) { ... }
!=等しくないif (a!=b) { ... }
>左辺が大きいif (a>b) { ... }
>=左辺が等しいか大きいif (a>=b) { ... }
<左辺が小さいif (a<b) { ... }
<=左辺が等しいか小さいif (a<=b) { ... }

==, != を等値演算子、>, < などを関係演算子と呼んでいます。
これらより算術演算子のほうが優先度が高いため、
if(a < b-1) という記述は
if( a < (b-1) ) と同じとみなされます。

(左から順に処理されてまず a < b が先に処理されるようにはなりません。)

||, && などの論理演算子

複数の条件を並べて判定したい場合は以下のように書きます。

演算子意味利用例
&&AND
(両方の条件が成立したら)
if (a==b && a<100) { ... }
(aとb が等しく、かつ a が 100 未満なら真)
||OR
(どちらかの条件が成立したら)
if (a==b || a<100) { ... }
(aとb が等いか、または a が 100 未満なら真)
!NOT
(条件の反転)
if (! a==b) { ... }
(aとb が等しくなければ真)

&& や || を論理演算子と呼んでいます。否定の ! は否定演算子と呼ばれています。
これらは関係演算子よりさらに低い優先度が設定されているので、
if( a < b && c > d )
if( ( a < b ) && ( c > d ) ) として処理されます。
また、
if( a < b-1 && c + 2 > d -5 )
if( ( a < ( b-1 ) ) && ( ( c + 2 ) > ( d -5 ) ) として処理されます。

(なるべくバグを発生させない、プログラマの勘違いを誘発させないようにするために、暗黙の優先順位に依存した複雑な論理式を書くより、( ) を明示的に使ってわかりやすい記述を心がける方がよいでしょう。)


Yutaka Yasuda (yasuda@cc.kyoto-su.ac.jp)