【C言語】if文&・比較を行う文について解説!

なぜ条件判断が必要なのか

上から書かれている順序通りに実行し、文がなくなれば終わりになるというプログラムでは、単純な処理しか実行できません。

少しでも複雑な処理をさせようとするためには、条件によって処理の内容を変えるようにします。

お金がある→焼肉定食、金がない→牛丼並のような、条件による判断が必要になってきます。

コンピュータの世界では、条件と言えば、数値に他ありません。

さらに具体的に言えば、2つの数値の比較こそが条件になります。

条件判断をする文

C言語には条件による判断を行う文、if文が用意されています。

if文は2つの数値の値を比較して、その結果を元に処理分けを行います。

if(条件式) 文;

if文による数値の比較は、非常に明快で単純です。すなわち、指定された数値が、0であるかを判断するだけです。

C言語では、条件による判定を行う場合、0を偽、0以外を真と呼んでいます。

if文では、指定された数値が真である(数値が0以外の)場合だけ横の文を実行します。

そうでない場合、文は飛ばされて、if文の後の文を実行します。

次のプログラムは、数値が真(数値が0以外)の時だけ、数値を実行します。

#include<stdio.h>

int main(){
     int kazu =100;
     if(kazu)printf("%d¥n",kazu);
     return 0;
}

実行結果は以下。

100

このプログラムでは、int kazu =100;としてみますが、これは、宣言と同時に代入を同時に行う場合の書き方です。

この書き方は、変数の値を最初に決められるため、初期化とも呼ばれます。

初期化
変数の宣言と同時に数値を代入すること。

このプログラムでは、kazuの値を0にすると何も表示されませんが、それ以外の値にしたときは、その値が表示されます。

比較のための演算子

さっきの説明を読んだだけでは、if文はかなり使い道がない文に見えるかもしれません。

しかし、普通の計算とif文を組み合わせれば、もっと高度な比較が可能です。

例えば、値が同じ数同を減算すると、答えは当然0になります。

この性質を利用すれば、引き算によって値の判定が可能になります。

次のプログラムは、その性質を利用し、入力された値が100であるかを判断します。

#include<stdio.h>

int main(){
     int kazu;
     scanf("%d",&kazu);
     if(kazu -100)printf("入力値は100ではありません。¥n");
     return 0;
}

実行し、100を入力した場合の結果は、次の通りになります。

100 //入力したデータ

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

99 //入力したデータ
入力値は100ではありません。

この方法をさらに複雑に応用すれば、非常に高度な比較も可能になります。

しかし、変数の値が100かどうかを調べるのに、減算しなければならないというのは不自然です。

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

この演算子は、2つの値が等しいときには結果が真になるという計算を行います。

次のプログラムは、==演算子で入力された値が100かどうかを調べる例です。

#include<stdio.h>

int main(){
     int kazu;
     scanf("%d",&kazu);
     if(kazu ==100)printf("入力値は100です。¥n");
     return 0;
}

このプログラムを実行し、100を入力した場合の結果は、以下のようになります。

100 //入力したデータ
入力値は100です。

100以外を入力した場合の実行結果は以下。

135 //入力したデータ

先ほどと表示・非表示の対応が反対ですが、ちゃんと判定が行われていますね。

本日はここまでです。次回はif文のより発展的な書き方について書きたいと思います。

ご覧いただき、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA