if文

広告

プログラムは記述した順に実行されていきます。ただある条件によって処理を分けたい場合もあります。例えば変数の値が正の数ならこちらの処理を行い負の数ならこちらの処理を行うといった場合です。

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

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

条件式の箇所には「x == 10」や「y > 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」よりも大きいかどうかを判別しています。大きい場合には条件式が真となり、「{」から「}」で囲まれた中にある行が順に実行されます。

なお、1行だけを実行する場合であっても「{」を「}」使っても結構です。

サンプルプログラム

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

test1-1.c

#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 )