【C言語】条件分岐する方法【if文の使い方】

C言語

この記事では、C言語でif文を使う方法を解説します。if文とは制御構文の1つで、条件式によって処理を分岐させることができます。

この記事で学べること
  • if文の基本的な使い方
  • 比較演算子について
  • 論理演算子について

if文の基本的な使い方

if文は条件式によって処理を分岐させます。

書式

以下のように記述します。

if(条件式){
    条件式が真の時に処理されるブロック
}

以下のように1行で記述することもできます。

if(条件式) 条件式が真の時に処理される行

サンプル

val変数の値が「0」ならばif文後のprintf関数が処理されます。

#include <stdio.h>

int main() 
{
    int val = 0;
    
    // == で値が等しいか判定
    if(val == 0) printf("0です\n");
}

実行結果

0です

比較演算子を使った条件式

比較演算子を使うことで様々な条件を指定することができます。

演算子意味
x == yx と y が等しいかどうか
x != yx と y が等しくないかどうか
x < yx が y より小さいかどうか
x > yx が y より大きいかどうか
x <= yx が y 以下かどうか
x >= yx が y 以上かどうか

これらの条件式を使った例も見てみましょう!

等しくない:x != y

xが「0」と等しくなければif文後のprintf関数が処理されます。

#include <stdio.h>

int main() 
{
    int x = 1;

    if(x != 0) printf("xは0以外です\n");
}

実行結果

xは0以外です

小なり:x < y

xが「0」よりも小さければif文後のprintf関数が処理されます。

#include stdio.h

int main() 
{
    int x = -1;

    if(x < 0) printf("xは0より小さいです\n");
}

実行結果

xは0より小さいです

大なりイコール:x >= y

xが「0」以上であればif文後のprintf関数が処理されます。

#include <stdio.h>

int main() 
{
    int x = 0;

    if(x >= 0) printf("xは0以上です\n");
}

実行結果

xは0以上です

条件式が返す真偽値

条件式は処理されると真偽値を返します。
試しに条件式が返している値を確認してみましょう!

#include <stdio.h>

int main() 
{
    int x = 0;

    printf("真: %d\n", x == 0);
    printf("偽: %d\n", x != 0);
}

実行結果

真: 1
偽: 0

真では1、偽では0が返されました。

条件式にいろんな値を指定する

if文の条件式に色々な値を指定して挙動を見てみましょう。

0と1

int型の0と1を指定してみます。

#include <stdio.h>

int main() 
{
    int zero = 0;
    int one = 1;

    if(zero)printf("zero\n");
    if(one)printf("one\n");
}

実行結果

one

int型以外の型でも同様の結果になります。

#include <stdio.h>

int main() 
{
    float zero = 0.0;
    float one = 1.0;

    if(zero)printf("zero\n");
    if(one)printf("one\n");
}

実行結果

one

NULL

NULLを指定してみます。

#include <stdio.h>

int main() 
{
    if(NULL)printf("NULL\n");
}

実行結果

なにも出力されなかったので、偽だったことがわかります。

bool値

stdbool.hbool値を使ってみます。

#include <stdio.h>
#include <stdbool.h>

int main() 
{
    if(true)printf("true\n");
    if(false)printf("false\n");
}

実行結果

true

条件式が偽だった場合の処理:else

elseを使うことで、条件式が偽のときの処理を定義することができます。

書式

elseは、以下のように記述します。

if(条件式){

    条件式が真の時に処理されるブロック

} else {

    条件式が偽の時に処理されるブロック

}

サンプル

以下のコードでは、奇遇を判定しています。

#include <stdio.h>

int main() 
{
    int num = 1;

    // numを2で割った余りを0と同等か比較しています
    if(num % 2 == 0){
        printf("numは偶数\n");
    } else {
        printf("numは奇数\n");
    } 
}

実行結果

numは奇数

新たな条件の追加:else if

else ifを使うことで、新たな条件をいくつでも追加することができます。

書式

else ifは、以下のように記述します。

if(条件式1){

    条件式1が真の時に処理されるブロック

} else if(条件式2){

    条件式1が偽、条件式2が真の時に処理されるブロック

} else {

    条件式1,2がどちらも偽の場合に処理されるブロック

}

サンプル

以下のコードは、年齢に適した年代を出力します。else ifを定義して細かく条件を分けました。age変数の値を変えてみて挙動を確かめてみてください。

#include <stdio.h>

int main() 
{
   unsigned int age = 100;

    if(age < 20){
        printf("%d歳は少年\n", age);
    } else if(age < 40) {
        printf("%d歳は青年\n", age);
    } else if(age < 60) {
        printf("%d歳は壮年\n", age);
    } else if(age < 100) {
        printf("%d歳は老年\n", age);
    } else {
        printf("%d歳は御長寿\n", age);
    }
}

実行結果

100歳は御長寿

複数の条件をつなぐ:論理演算子

論理演算子で複数の条件式をつないで定義することができます。

演算子意味
条件式1 && 条件式2条件式1 かつ 条件式2が真ならば真
条件式1 || 条件式2条件式1 または 条件式2が真ならば真

論理演算子を使った例を見てみましょう!

AND:&&

繋いだどちらの条件も真でなければ真として判定されません。条件の幅を狭めたい場合に使います。

以下の例では、20歳以上の男性のみが真として判定されます。

#include <stdio.h>

int main() 
{
    int age = 35;
    char gender = 0;  // 男性: 0、女性: 1

    if((age >= 20) && (gender == 0)){
        printf("20歳以上の男性です\n");
    }
}

実行結果

20歳以上の男性です

OR:||

繋いだどちらかの条件が真ならば真として判定されます。条件の幅を広めたい場合に使います。

以下の例では、20歳以上または男性ならば真として判定されます。

#include <stdio.h>

int main() 
{
    int age = 35;
    char gender = 1;  // 男性: 0、女性: 1

    if((age >= 20) || (gender == 0)){
        printf("20歳以上または男性\n");
    }
}

実行結果

20歳以上または男性

まとめ

この記事では、C言語のif文の使い方を解説しました。

今回のおさらい

  • if文 = 『if(条件式) 真の時に処理される命令文』 
  • 条件の追加 = 『else if(条件式)』
  • 偽の時の処理 = 『else』

C言語に関わらず、どのプログラミング言語でもif文は重要な構文です。他の言語でも使い方は通ずるところがあるのでしっかりと覚えておきましょう。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

タイトルとURLをコピーしました