比較のための演算子
等値演算子
前節では ==演算子を紹介しましたが、この系統の演算子を等値演算子と呼びます。
等値演算子には、次の2種類が用意されています。
これらの演算子は、値が等しいか、そうでないかを比較するために使われます。
次のプログラムは、入力された数が 10 であるかを判定します。
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。
このプログラムを実行させて 10 以外を入力した場合の結果は、次の通りになります。
等値演算子には、次の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 です。
このプログラムを実行させて 10 以外を入力した場合の結果は、次の通りになります。
実行結果
135 入力したデータ
入力値は 10 ではありません。
入力値は 10 ではありません。
演算子なので
この比較演算子や、次に説明する 関係、論理演算子も演算子です。
つまり、普通に数式の中に置いて、計算に使うこともできます。
次の数式は、変数 val1 と val2 が
等しい時には answer に(多くのコンパイラでは)1 、
等しくない時は 0 が代入されます。
answer = val1 == val2;
上級者にはこの様なやり方を好む人もいますが、
わかりやすいとはいえませんので、おすすめはできません。
つまり、普通に数式の中に置いて、計算に使うこともできます。
次の数式は、変数 val1 と val2 が
等しい時には answer に(多くのコンパイラでは)1 、
等しくない時は 0 が代入されます。
answer = val1 == val2;
上級者にはこの様なやり方を好む人もいますが、
わかりやすいとはいえませんので、おすすめはできません。
関係演算子
等値演算子は2つの値が等しいかどうかを調べる演算子でしたが、
関係演算子は、2つの値の大小関係を調べる演算子です。
いまさら言うまでもないことかもしれませんが、小さいと以下の違いは、
等値を含むのか含まないかの違いです。以下&以上は、等しい場合も真を返してきます。
これらの演算子は、2つの値の大小関係を調べるために使われます。
次のプログラムは、入力された数が 10 より大きいかどうかを判定します。
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。
このプログラムを実行させて 10 より大きい入力をした場合の結果は、次の通りになります。
このプログラムを実行させて 10 より小さい入力をした場合の結果は、次の通りになります。
関係演算子は、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 です。
このプログラムを実行させて 10 より大きい入力をした場合の結果は、次の通りになります。
実行結果
135 入力したデータ
入力値は 10 より大きいです。
入力値は 10 より大きいです。
このプログラムを実行させて 10 より小さい入力をした場合の結果は、次の通りになります。
実行結果
5 入力したデータ
入力値は 10 より小さいです。
入力値は 10 より小さいです。
論理演算子
論理演算子は、これまでの演算子とはちょっと異なる性質を持った演算子で、
複数の条件を統合したり、判定を反転するために使われたりします。
if文では、1度に1つの条件での判定しか出来ないのですが、
これらの演算子を使用することで、複数条件での判定が可能になります。
次のプログラムは、入力された数が 8~12 の間かどうかを判定します。
このプログラムを実行させて8~12の間を入力した場合の結果は、次の通りになります。
このプログラムを実行させて8~12の間以外を入力した場合の結果は、次の通りになります。
このプログラムのポイントは、if文の条件の部分にあります。
if文では1つの条件での判定しか出来ないので、普通の方法では、8以上 かつ 12以下という条件を判定することはできません。
しかし、&&演算子を使うことで、2つの条件での判定が可能になります。
また、2つ目のif文の判定は、1つ目の判定に!演算子を加えただけです。
!演算子は、判定結果を逆にするという機能を持つ演算子なので、
1つ目のif文とはまったく反対の結果になります。
複数の条件を統合したり、判定を反転するために使われたりします。
| 記号 | 意味 | 真になる | 偽になる |
|---|---|---|---|
| && | かつ(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の間です。
このプログラムを実行させて8~12の間以外を入力した場合の結果は、次の通りになります。
実行結果
3 入力したデータ
8~12の間ではありません。
8~12の間ではありません。
このプログラムのポイントは、if文の条件の部分にあります。
if文では1つの条件での判定しか出来ないので、普通の方法では、8以上 かつ 12以下という条件を判定することはできません。
しかし、&&演算子を使うことで、2つの条件での判定が可能になります。
また、2つ目のif文の判定は、1つ目の判定に!演算子を加えただけです。
!演算子は、判定結果を逆にするという機能を持つ演算子なので、
1つ目のif文とはまったく反対の結果になります。
本サイトについて
苦しんで覚えるC言語(苦C)はC言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。




