前節では ==演算子を紹介しましたが、この系統の演算子を等値演算子と呼びます。
等値演算子には、次の2種類が用意されています。
記号 | 真になる | 偽になる | |
---|---|---|---|
== | 2つの値が等しい | 2つの値が等しくない | |
!= | 2つの値が等しくない | 2つの値が等しい |
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。#include <stdio.h> int main(void) { int suuti; scanf("%d",&suuti); if (suuti == 10) printf("入力値は 10 です。\n"); if (suuti != 10) printf("入力値は 10 ではありません。\n"); return 0; }
このプログラムを実行させて 10 以外を入力した場合の結果は、次の通りになります。
10 入力したデータ
入力値は 10 です。
135 入力したデータ
入力値は 10 ではありません。
[ 演算子なので ]
この比較演算子や、次に説明する 関係、論理演算子も演算子です。
つまり、普通に数式の中に置いて、計算に使うことも出来ます。
次の数式は、変数 val1 と val2 が
等しい時には answer に(多くのコンパイラでは)1 、
等しくない時は 0 が代入されます。
上級者にはこの様なやり方を好む人がいますが、皆さんにはお勧め出来ません。answer = val1 == val2;
等値演算子は2つの値が等しいかどうかを調べる演算子でしたが、
関係演算子は、2つの値の大小関係を調べる演算子です。
記号 | 真になる | 偽になる |
---|---|---|
< | 左の値が右より小さい | 左の値が右より小さくない |
> | 左の値が右より大きい | 左の値が右より大きくない |
<= | 左の値が右以下 | 左の値が右以下ではない |
>= | 左の値が右以上 | 左の値が右以上ではない |
これらの演算子は、2つの値の大小関係を調べるために使われます。
次のプログラムは、入力された数が 10 より大きいかどうかを判定します。
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。#include <stdio.h> int main(void) { int suuti; scanf("%d",&suuti); if (suuti == 10) printf("入力値は 10 です。\n"); if (suuti > 10) printf("入力値は 10 より大きいです。\n"); if (suuti < 10) printf("入力値は 10 より小さいです。\n"); return 0; }
このプログラムを実行させて 10 より大きい入力をした場合の結果は、次の通りになります。
10 入力したデータ
入力値は 10 です。
このプログラムを実行させて 10 より小さい入力をした場合の結果は、次の通りになります。
135 入力したデータ
入力値は 10 より大きいです。
5 入力したデータ
入力値は 10 より小さいです。
論理演算子は、これまでの演算子とはちょっと異なる性質を持った演算子で、
複数の条件を統合したり、判定を反転するために使われたりします。
記号 | 意味 | 真になる | 偽になる |
---|---|---|---|
&& | かつ(AND) | 右と左の条件が両方真 | 右と左の条件のどちらか片方でも偽 |
|| | または(OR) | 右と左の条件のどちらか片方でも真 | 右と左の条件が両方偽 |
! | 否(NOT) | 条件が偽 | 条件が真 |
このプログラムを実行させて8〜12の間を入力した場合の結果は、次の通りになります。#include <stdio.h> int main(void) { int suuti; scanf("%d",&suuti); if (suuti >= 8 && suuti <= 12) printf("8〜12の間です。\n"); if (!(suuti >= 8 && suuti <= 12)) printf("8〜12の間ではありません。\n"); return 0; }
このプログラムを実行させて8〜12の間以外を入力した場合の結果は、次の通りになります。
9 入力したデータ
8〜12の間です。
このプログラムのポイントは、if文の条件の部分にあります。
3 入力したデータ
8〜12の間ではありません。
また、2つ目のif文の判定は、1つ目の判定に!演算子を加えただけです。
!演算子は、判定結果を逆にするという機能を持つ演算子なので、
1つ目のif文とは全く反対の結果になります。