C言語の論理判定(if, while forの判定)は、『0が不正立』、『0以外を成立』する と判定します。
それに合わせて、以下の演算子は、条件が成立すれば 1 の演算結果になり、
不正立で、 0 の演算結果になります。
(処理順番は、優先順位と結合規則の表を参照ください。)
条件判定表記 | 意味 |
---|---|
左項 < 右項 | 左項が右項より小さい場合に1で、そうでなければ0の演算結果になります。 |
左項 <= 右項 | 左項が右項以下の場合に1で、そうでなければ0の演算結果になります。 |
左項 > 右項 | 左項が右項より大きい場合に1で、そうでなければ0の演算結果になります。 |
左項 >= 右項 | 左項が右項以上の場合に1で、そうでなければ0の演算結果になります。 |
左項 == 右項 | 左項が右項と等しい場合に1で、そうでなければ0の演算結果になります。 |
左項 != 右項 | 左項が右項と等しくない場合に1で、そうでなければ0の演算結果になります。 |
上記などの判定結果を、されらに利用して判定する以下の論理演算子があります。
条件判定表記 | 意味 |
---|---|
条件 && 条件 | 左の条件が成立し、そして右の条件も成立するかの判定です。 |
条件 || 条件 | 左の条件が成立するか、または右の条件が成立するかの判定です。 |
! 条件 | 右の条件が成立しないなら、全体を成立と判定します。 |
例えば、if( c >= 'a' && c <= 'z') { 〜の表現で、
変数cに記憶される内容が 'a' の文字コード以上で、
かつ(そして) 'z' の文字コード以下か?と判定しています。
つまり、cの内容がASCIIコードの
小文字かを判定していることになります。
例えば、if( ten < 50 || ten >= 75) { 〜の表現で、
変数tenに記憶される内容が 50 より小さいか、
または、 75 以上?と判定しています。
イメージで示すと、次の斜め範囲を示しています。
これは表現を変えると、50以上で(そして)
75未満という範囲でないか?
と判定する次のイメージと同じことです。
この表現のコードは ! と && を使って
if( ! ( ten >= 50 && ten < 75) { 〜
と書けるわけです。