if文を使った条件分岐

プログラムは記述された順に実行されていきますが、指定した条件に応じて実行する処理を分けたい場合があります。このような条件式が真が偽で処理を分けたいときに利用するのが if 文です。ここでは C 言語で if 文を使った条件分岐を行う方法について解説します。

(Last modified: )

if文を使った条件分岐

このように条件に従って処理を分岐させるための使われるのが if 文です。 if 文の書式は次のようになっています。

if (条件式)
  条件式が真の時に実行する処理;

条件式の箇所には x == 10y > 15 など関係演算子を使った条件式を記述します。この条件が真(true)となる時にすぐ次の行が実行されます。(関係演算子については次のページを参照して下さい)。

実際のプログラム例としては次のようになります。

int x = 10;

if (x < 20)
  printf("over 20\n");

printf("End\n");

上記の場合では条件式として変数 x に格納されている値が 20 よりも大きいかどうかを判別しています。大きい場合には条件式が真となり次の行である printf("over 20\n"); が実行されます。変数 x に格納されている値が 20 以下の場合は次の行は実行されずその次の行の printf("End\n"); が実行されます。

なお if 文の次の行の先頭がインデント(字下げ)されています。これは if 文の結果によって実行される箇所であるというのを分かりやすくするための慣習として行われていますがインデントは必須ではありません。ただ次のようにインデントしないで記述するとどの行が条件によって実行される行なのか分かりにくくなります。

int x = 10;

if (x < 20)
printf("over 20\n");

printf("End\n");

条件の結果によって複数の行を実行する

先ほどの書式では条件式が真だった場合にすぐ次の行を実行するようになっていました。ただ if 文の 1 行だけしか実行できないのでは不便です。そこで if 文の条件式が真だった場合に複数の行を実行するには次の書式を使用します。

if (条件式)
{
  条件式が真の時に実行する処理1;
  条件式が真の時に実行する処理2;
  条件式が真の時に実行する処理3;
  ...;
}

今回は次の行と決まっているわけではないので、どこからどこまでを実行するのか分かるようにしなければなりません。そこで実行する範囲を {} で囲んで指定します。 {} の中に書かれている処理は何行であってもすべて実行します。

なお { の記述位置は「(条件式)」の後ろに記述します。よく使われる記述方法としては上記のように改行して記述する場合と、次のように条件式のすぐ後ろに記述する方法が使われます。

if (条件式) {
  条件式が真の時に実行する処理1;
  条件式が真の時に実行する処理2;
  条件式が真の時に実行する処理3;
  ...;
}

実際のプログラム例としては次のようになります。

int x = 10;

if (x < 20) {
  printf("over 20\n");
  x = 10;
}

printf("End\n");

上記の場合では条件式として変数 x に格納されている値が 20 よりも大きいかどうかを判別しています。大きい場合には条件式が真となり、 { から } で囲まれた中にある行が順に実行されます。

サンプルコード

では簡単なサンプルプログラムを作成して試してみます。

#include <stdio.h>

int main(void){
  int num;

  num = 15;

  if (num > 20){
    printf("20を超えています。10にリセットします。\n");
    num = 10;
  }

  if (num > 10){
    printf("10を超えています。5にリセットします。\n");
    num = 5;
  }

  printf("num = %d\n", num);

  return 0;
}

上記を「test1-1.c」の名前で保存します。まずコンパイルを行います。

条件分岐(if)

コンパイルが終わりましたら「test1-1」と入力して実行します。

条件分岐(if)

2つのif文が使われています。1つ目のif文は条件が合いませんので実行されませんが、2つ目のif文は条件に適合するため「{」から「}」の間の処理が実行されています。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。