MMGamesロゴ  MMGames
Twitterシェアボタン  Facebookシェアボタン   
しんで覚えるC言語
しんで覚えるC言語

比較のための演算子

等値演算子
前節では ==演算子を紹介しましたが、この系統の演算子を等値演算子と呼びます。
等値演算子には、次の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つの値の大小関係を調べるために使われます。
次のプログラムは、入力された数が 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 より小さいです。

論理演算子
論理演算子は、これまでの演算子とはちょっと異なる性質を持った演算子で、
複数の条件を統合したり、判定を反転するために使われたりします。

記号 意味 真になる 偽になる
&& かつ(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文とはまったく反対の結果になります。


本サイトについて

苦しんで覚えるC言語(苦C)は
C言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。

第0部:プログラム概要編
  1. プログラムとは何か?
2章:プログラムの書き方
  1. 書き方のルール
  2. 書き方の慣習
  3. 練習問題2
3章:画面への表示
  1. 文字列の表示
  2. 改行文字
  3. 練習問題3
6章:キーボードからの入力
  1. 入力用の関数
  2. 入力の恐怖
  3. 練習問題6
9章:回数が決まっている繰り返し
  1. 繰り返しを行う文
  2. ループ動作の仕組み
  3. 練習問題9
10章:回数がわからない繰り返し
  1. 回数不明ループ
  2. 入力チェック
  3. 練習問題10
13章:複数の変数を一括して扱う
  1. 複数の変数をまとめて扱う
  2. 配列の使い方
  3. 練習問題13
20章:複数のソースファイル
  1. 最小限の分割
  2. 分割の定石
  3. 練習問題20

コメント
COMMENT

💬 コメント投稿欄を開く