等価演算子
前回の記事で、==演算子を紹介しましたが、この系統の演算子を等価演算子と呼びます。
C言語の等価演算子には以下の2タイプが用意されています。
記号 | 真になる | 偽になる |
---|---|---|
== | 2つの値が等しい | 2つの値が等しくない |
!= | 2つの値が等しくない | 2つの値が等しい |
これらの演算子は値が等しいか、そうでないかを比較するために使われます。
次のプログラムは入力された値が10であるかどうかを比較します。
#include <stdio.h>
int main()
{
int kazu;
scanf("%d", &kazu);
if (kazu == 100)printf("入力値は100です¥n");
if (kazu != 100)printf("入力値は100ではありません。¥n");
return 0;
}
100を入力してみた時の出力と、100以外を入力した場合の出力は以下。
100 //入力値
入力値は100です。
99 //入力値
入力値は100ではありません。
もちろんコメント部分は出力されないので、ご注意ください。
【Column】演算子なので
answer = value1== value2
この比較演算子や、関係、論理演算子も演算子です。
つまり普通に数式の中に置いて、計算に使う事もできます。
上の数式は変数value1とvalue2が等しいときは、answer(多くのコンパイラでは)に1、等しくない場合は0が代入されます。上級者にはこのようなやり方を好むような人がいますが、初学者にはお勧めできません。

関係演算子
等値演算子は2つの値が等しいかどうかを調べる演算子でしたが、関係演算子は2つの値の大小関係を調べる演算子です。
記号 | 真になる | 偽になる |
---|---|---|
< | 左の値が右の値より小さい | 左の値が右の値より小さくない |
> | 右の値が左の値より小さい | 右の値が左の値より小さくない |
<= | 左の値が右以下 | 左の値が右以下ではない |
>= | 右の値が左以下 | 右の値が左以下ではない |
小学校で習いましたが、小さいと以下の違いは等値を含むか含まないかの違いです。
以下と以上は、等しい場合も真を返してきます。
これらの演算子は、2つの値の大小関係を調べるために使われます。
次のプログラムは、入力された値が100より大きいかどうかを判別します。
#include <stdio.h>
int main()
{
int kazu;
scanf("%d", &kazu);
if (kazu == 100)printf("入力値は100です。¥n");
if (kazu > 100)printf("入力値は100より大きいです。¥n");
if (kazu < 100)printf("入力値は100より小さいです。¥n");
return 0;
}
このプログラムの実行結果は以下のようになります。
100 //入力値
入力値は100です。
200 //入力値
入力値は100より大きいです。
45 //入力値
入力値は100より小さいです。
もちろんコメント部は出力されませんので、ご注意ください。
論理演算子
論理演算子は、これまでの演算子とは少し異なる性質を持っています。
複数の条件を統合したり、判定を反転するために使われたりします。
記号 | 意味 | 真になる | 偽になる |
---|---|---|---|
&& | かつ (AND) | 右と左の条件が 両方真 | 右と左の条件の どちらか片方でも偽 |
|| | または (OR) | 右と左の条件の どちらか片方でも真 | 右と左の条件が 両方偽 |
! | 否 (NOT) | 条件が偽 | 条件が真 |
if文では、一度に1つの条件しか判定しかできないのですが、これらの演算子を使用することで、複数条件での判定が可能になります。
次のプログラムは、入力された数が114~514の間かどうかを判定します。
……数値に特に意味は、ないです。
#include <stdio.h>
int main()
{
int kazu;
scanf("%d", &kazu);
if (kazu >= 114 && kazu <= 514)
printf("114~514の間です。¥n");
if (!(kazu >= 114 && kazu <= 514))
printf("114~514の間ではありません。¥n");
return 0;
}
表記の問題でインデントがずれてしまってますが、プログラムの実行には全く問題ないので、お気になさらず。
このプログラムの実行結果は以下。
222 //入力値
114~514の間です。
1145141919810 //入力値
114~514の間ではありません。
このプログラムのポイントはif文の条件の部分です。
if文では1つの条件での判定しかできないので、普通の方法では、114以上かつ514以下という条件を判別することはできません。
しかし、&&演算子をすることで、2つの条件下での判定が可能になります。
また2つ目のif文の判定は、一つ目の判定に!演算子を加えただけです。
!演算子は、判定結果を逆にするという機能を持つ演算子なので、1つ目のif文と全く逆の結果になります。