<戻る  目次  進む>  
          <戻 進> 雑誌 白黒 明暗   フォント 既定 ゴシック 明朝 手書き   サイズ   標準  


   比較のための演算子   

  1. 第1項:等値演算子
  2. 第2項:関係演算子
  3. 第3項:論理演算子

[1]等値演算子

前節では ==演算子を紹介しましたが、この系統の演算子を等値演算子と呼びます。
等値演算子には、次の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 です。
このプログラムを実行させて 10 以外を入力した場合の結果は、次の通りになります。

135 入力したデータ
入力値は 10 ではありません。

[  演算子なので  ]
この比較演算子や、次に説明する 関係、論理演算子も演算子です。
つまり、普通に数式の中に置いて、計算に使うことも出来ます。
次の数式は、変数 val1 と val2 が
等しい時には answer に(多くのコンパイラでは)1 、
等しくない時は 0 が代入されます。

answer = val1 == val2;
上級者にはこの様なやり方を好む人がいますが、皆さんにはお勧め出来ません。

目次に戻る


[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");
	if (suuti < 10) printf("入力値は 10 より小さいです。\n");
	return 0;
}
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。

10 入力したデータ
入力値は 10 です。
このプログラムを実行させて 10 より大きい入力をした場合の結果は、次の通りになります。

135 入力したデータ
入力値は 10 より大きいです。
このプログラムを実行させて 10 より小さい入力をした場合の結果は、次の通りになります。

5 入力したデータ
入力値は 10 より小さいです。

目次に戻る


[3]論理演算子

論理演算子は、これまでの演算子とはちょっと異なる性質を持った演算子で、
複数の条件を統合したり、判定を反転するために使われたりします。
記号 意味 真になる 偽になる
&& かつ(AND) 右と左の条件が両方真 右と左の条件のどちらか片方でも偽
|| または(OR) 右と左の条件のどちらか片方でも真 右と左の条件が両方偽
! 否(NOT) 条件が偽 条件が真
if文では、1度に1つの条件での判定しか出来ないのですが、
これらの演算子を使用することで、複数条件での判定が可能になります。
次のプログラムは、入力された数が 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の間です。
このプログラムを実行させて8〜12の間以外を入力した場合の結果は、次の通りになります。

3 入力したデータ
8〜12の間ではありません。
このプログラムのポイントは、if文の条件の部分にあります。
if文では1つの条件での判定しか出来ないので、普通の方法では、
8以上 かつ 12以下 という条件を判定することは出来ません。
しかし、&&演算子を使うことで、2つの条件での判定が可能になります。

また、2つ目のif文の判定は、1つ目の判定に!演算子を加えただけです。
!演算子は、判定結果を逆にするという機能を持つ演算子なので、
1つ目のif文とは全く反対の結果になります。

目次に戻る


<−前に戻る  先頭に戻る  次へ進む−>