表紙 <戻 進> i-mobile

   比較を行う文   

  1. 第1項:条件判断
  2. 第2項:条件判断をする文
  3. 第3項:比較のための演算子

[1]条件判断

今まで作ってきたプログラムは、全て一方通行のプログラムでした。
つまり、始めから終わりまで、書かれている順番通りに文を実行し、
文がなくなれば終わりになると言う、最も単純な仕組みでした。

本当に単純なプログラムであればこれでも何とかなるのですが、
少しでも複雑な処理をさせようとすると、すぐに行き詰まります。

この問題を解決するには、条件によって、処理の内容を変えるようにします。
金がある->焼肉定食、金がない->ざるソバ
のような、条件による判断が必ず必要になってきます。

コンピュータの世界では、条件と言えば、数値の値に他ありません。
更に具体的に言えば、2つの数値の比較こそが条件となりえます。

目次に戻る


[2]条件判断をする文


C言語には、条件による判断を行う文として、if(イフ)文が用意されています。
if文は、2つの数値の値を比較して、その結果を元に処理分けを行います。
if文の使い方は、次の通りになります。


if (条件式) 文 ;
if文による数値の比較は、非常に明快で単純です。
すなわち、指定された数値が、0 であるかそうでないかを判定するだけです。
C言語では、条件による判定を行う場合、0を偽、0以外を真、と呼んでいます。

[  真  ]
条件判断の呼び方で、0以外の数値(負の数ですら)を意味する。

[  偽  ]
条件判断の呼び方で、0を意味する。
if文では、指定された数値が真である(数値が0以外の)場合だけ横の文を実行します。
そうでない場合は、文は飛ばされて、if文の後の文を実行します。
次のプログラムは、数値が真(数値が0以外の)の時だけ、数値を表示します。

#include <stdio.h>

int main(void)
{
	int suuti = 10;
	if (suuti) printf("%d\n",suuti);
	return 0;
}
このプログラムの実行結果は、次の通りになります。

10
このプログラムでは、int suuti=10; としていますが、
これは、宣言と同時に代入を行う場合の書き方です。
この書き方は、変数の値を最初に決められるため、初期化と呼ぶことがあります。

[  初期化  ]
変数の宣言と同時に数値を代入すること。
このプログラムでは、suuti の値を 0 にすると何も表示されませんが、
それ以外の値にした時は、その値が表示されます。

目次に戻る


[3]比較のための演算子

前節を読んだだけでは、if文はかなり使い道のない文に見えるかもしれません。
なにしろ、0 かそうでないかの判定しか出来ないのですから。

しかし、普通の計算とif文を組み合わせれば、もっと高度な比較が可能です。
例えば、値が同じ数同士を減算すると、答えは当然 0 になります。
この性質を利用すれば、引き算によって、値の判定が可能になります。
次のプログラムは、その性質を利用し、入力された数が 10 であるかを判定します。


#include <stdio.h>

int main(void)
{
	int suuti;
	scanf("%d",&suuti);
	if (suuti - 10) printf("入力値は 10 ではありません。\n");
	return 0;
}
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。

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

135 入力したデータ
入力値は 10 ではありません。
この方法を更に複雑に応用すれば、非常に高度な比較も可能になりますが、
どう考えても、変数の値が 10 かどうかを調べるのに、
減算しなければならないと言うのは不自然です。

そこで、C言語には、比較専用の演算子が用意されています。
2つの数値が等しいかどうかを調べる場合には、==演算子を使用します。
この演算子は、2つの値が等しい時には結果が真になるという計算を行います。


[  =と==  ]
プロでも = と == をうっかり間違えてしまうことが良くあります。
= は 左の変数への代入、== は右と左の数値が等しいかの比較です。
思うように動かない時には、まずはここを疑ってみて下さい。
次のプログラムは、==演算子で入力された値が 10 かどうかを調べる例です。

#include <stdio.h>

int main(void)
{
	int suuti;
	scanf("%d",&suuti);
	if (suuti == 10) printf("入力値は 10 です。\n");
	return 0;
}
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。

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

135 入力したデータ
先ほどと表示・非表示の対応が反対ですが、ちゃんと判定が行われています。

目次に戻る



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