今まで作ってきたプログラムは、全て一方通行のプログラムでした。
つまり、始めから終わりまで、書かれている順番通りに文を実行し、
文がなくなれば終わりになると言う、最も単純な仕組みでした。
本当に単純なプログラムであればこれでも何とかなるのですが、
少しでも複雑な処理をさせようとすると、すぐに行き詰まります。
この問題を解決するには、条件によって、処理の内容を変えるようにします。
金がある->焼肉定食、金がない->ざるソバ
のような、条件による判断が必ず必要になってきます。
コンピュータの世界では、条件と言えば、数値の値に他ありません。
更に具体的に言えば、2つの数値の比較こそが条件となりえます。
C言語には、条件による判断を行う文として、if(イフ)文が用意されています。
if文は、2つの数値の値を比較して、その結果を元に処理分けを行います。
if文の使い方は、次の通りになります。
if文による数値の比較は、非常に明快で単純です。if (条件式) 文 ;
[ 真 ]
条件判断の呼び方で、0以外の数値(負の数ですら)を意味する。
if文では、指定された数値が真である(数値が0以外の)場合だけ横の文を実行します。
[ 偽 ]
条件判断の呼び方で、0を意味する。
このプログラムの実行結果は、次の通りになります。#include <stdio.h> int main(void) { int suuti = 10; if (suuti) printf("%d\n",suuti); return 0; }
このプログラムでは、int suuti=10; としていますが、
10
このプログラムでは、suuti の値を 0 にすると何も表示されませんが、
[ 初期化 ]
変数の宣言と同時に数値を代入すること。
前節を読んだだけでは、if文はかなり使い道のない文に見えるかもしれません。
なにしろ、0 かそうでないかの判定しか出来ないのですから。
しかし、普通の計算とif文を組み合わせれば、もっと高度な比較が可能です。
例えば、値が同じ数同士を減算すると、答えは当然 0 になります。
この性質を利用すれば、引き算によって、値の判定が可能になります。
次のプログラムは、その性質を利用し、入力された数が 10 であるかを判定します。
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。#include <stdio.h> int main(void) { int suuti; scanf("%d",&suuti); if (suuti - 10) printf("入力値は 10 ではありません。\n"); return 0; }
このプログラムを実行させて 10 以外を入力した場合の結果は、次の通りになります。
10 入力したデータ
この方法を更に複雑に応用すれば、非常に高度な比較も可能になりますが、
135 入力したデータ
入力値は 10 ではありません。
そこで、C言語には、比較専用の演算子が用意されています。
2つの数値が等しいかどうかを調べる場合には、==演算子を使用します。
この演算子は、2つの値が等しい時には結果が真になるという計算を行います。
次のプログラムは、==演算子で入力された値が 10 かどうかを調べる例です。
[ =と== ]
プロでも = と == をうっかり間違えてしまうことが良くあります。
= は 左の変数への代入、== は右と左の数値が等しいかの比較です。
思うように動かない時には、まずはここを疑ってみて下さい。
このプログラムを実行させて 10 を入力した場合の結果は、次の通りになります。#include <stdio.h> int main(void) { int suuti; scanf("%d",&suuti); if (suuti == 10) printf("入力値は 10 です。\n"); return 0; }
このプログラムを実行させて10以外を入力した場合の結果は、次の通りになります。
10 入力したデータ
入力値は 10 です。
先ほどと表示・非表示の対応が反対ですが、ちゃんと判定が行われています。
135 入力したデータ