C言語のif文とは?条件分岐処理の基本となるif文の使い方

ENGINEER.CLUB編集部

ENGINEER.CLUB編集部

プログラミングにおいて、条件分岐処理は必要不可欠な処理になります。

C言語において、条件分岐の制御文はいくつかありますが、この記事では、条件分岐処理の基本となるif文の使い方を紹介したいと思います。

One dayインターン

1.if文

1-1.if文とは

if文は条件分岐処理を行うための命令文です。

具体的には、「条件Aが成立する場合、処理A´をする」といったことをさせるための手法です。

次に、if文の記述方法は次のようになります。

if (条件式)

{

  (条件式が成立する場合の処理を記述)

}

1-2.条件式は真偽値で判定する

if文における条件式は真偽値で判定され、真の場合に条件が成立することになります。(※)

尚、真偽値は次のように判定します。

  • 真:≠0 (ゼロでない)
  • 偽:0  (ゼロである)

※ if文に限らず、C言語で扱う条件式全般が真偽値で判定されます。

以下の例を見てみましょう。

【例1-1】
int a = 0;
int b = 1;

if(a)
{
    printf(“変数aは真です。\n”); // 処理
}

if(b)
{
    printf(“変数bは真です。\n”); // 処理
}

上記の例の結果は、「変数bは真です。」だけが出力されます。

では、次に否定(~でない)を意味する条件式の記述方法を解説します。

条件式の先頭に、「!」を付けることで、否定を意味するようになります。

【例1-2】
int a = 0;
int b = 1;

if(!a)
{
    printf(“変数aは偽です。\n”); // 処理
}

if(!b)
{
    printf(“変数bは偽です。\n”); // 処理
}

上記の例の結果は、「変数aは偽です。」だけが出力されます。

1-3.関係演算子を使用した条件式

関係演算子を使用することで、より使いやすい条件式を実現することが出来ます。

関係演算子の種類を下表に記します。

項番演算子意味
1==等しいif( a == 0)  // aが0である
2!=等しくないif( a != 0)  // aが0でない
3より大きいif( a > 0) // aが0より大きい
4<より小さいif( a < 0) // aが0より小さい
5>=以上if( a >= 0) // aが0以上である
6<=以下if( a <= 0) // aが0以下である

演算子を使用した条件式の例を以下に記します。

【例1-3】
if(num%2 == 0)
{
    printf(“変数numは偶数です。\n”); // 処理
}

上記の例は、変数numを2で割った余りが0の場合に、変数numが偶数であることを出力します。上記の例では、偶数の場合にしか出力されませんが、奇数の場合にも結果を出力したいですよね。if文を2つ並べても実現することは可能ですが、else文を使用するとスッキリ記述できます。

else文を使用した条件式の例は次のようになります。

【例1-4】
if(num%2 == 0)
{
    printf(“変数numは偶数です。\n”); // 処理
}
else
{
    printf(“変数numは奇数です。\n”); // 処理
}

これで奇数の場合にも出力されるようになります。

尚、if文は真偽値で表すため、上記の例は次のように記述することもできます。

【例1-5】
if(!num%2)
{
    printf(“変数numは偶数です。\n”); // 処理
}
else
{
    printf(“変数numは奇数です。\n”); // 処理
}

なぜ同じになるかというと、num%2の結果が0(偽)になるからです。

次のようにしても同じ結果となります。

【例1-6】
if(num%2)
{
    printf(“変数numは奇数です。\n”); // 処理
}
else
{
    printf(“変数numは偶数です。\n”); // 処理
}

こちらは、num%2の結果が1(真)なので、出力する文字列を入れ替えることで同じ処理をすることが出来ます。


2.多分岐のif文

 条件分岐をさせる場合、必ずしも分岐が2つとは限りませんし、条件も1つとは限りません。

本章では、3つ以上に分岐させる場合、条件が複数ある場合の記述方法について解説します。

2-1.else if文

3つ以上に分岐させたい場合、else if文を使用します。

記述方法は次のようになります。

【例2-1】
int result = num % 3;

if(result == 0)
{
    printf(“変数numの3の剰余は0です。\n”);
}
else if(result == 1)
{
    printf(“変数numの3の剰余は1です。\n”);
}
else
{
    printf(“変数numの3の剰余は2です。\n”);
}

上記の例は、変数numを3で割った余りで分岐させています。このため、結果は0~2の3パターンとなります。

条件分岐の順序は、記述している順序に従います。このため、順序は次のようになります。

  1. if文
  2. else if文
  3. else文

if文は先頭の1回のみしか使用できません。また、else文はif、else ifの条件以外のものが入るため、記述順序は必ず最後の1つだけになります。

4つ以上に分岐させる場合はどうすればよいかというと、else ifを複数記述することになります。

では、4つに分岐させた例を以下に記します。

【例2-2】
int result = num % 5;

if(result == 0)
{
    printf(“変数numの5の剰余は0です。\n”);
}
else if(result == 1)
{
    printf(“変数numの5の剰余は1です。\n”);
}
else if(result == 2)
{
    printf(“変数numの5の剰余は2です。\n”);
}
else
{
    printf(“変数numの5の剰余は3または4です。\n”);
}

上記の例では、5で割った余りで判定しています。

5の剰余は0~4の5パターンになりますが、これを4つに分岐させているため、else分岐に入るのは3と4になります。

2-2.複数条件のif文

 複数条件で判定したい場合は、条件式を論理演算子でつなぎます。

論理演算子の種類を下表に記します。

項番演算子意味
1&&且つif(a >= 0) && (a >= 3)  // aが0以上3以下である
2||又はif(a == 0) || (a == 10) // aが0または10である

では、論理演算子を使用したif文の使用例を紹介します。

まずは、項番1のAND条件を利用した例になります。

【例2-3】
unsigned int age;  // 年齢を表す変数
//----------中略-----------
if(age < 7)  // 7歳未満
{
    printf(“未就学児、または小学1年生\n”);
}
else if((age >= 7) && (age <= 11)) // 7歳以上11歳以下
{
    printf(“小学生\n”);
}
else if(age == 12) // 12歳
{
    printf(“小学6年生、または中学1年生\n”);
}
else if((age >= 13) && (age <= 14)) // 13歳以上14歳以下
{
    printf(“中学生\n”);
}
else // その他
{
    printf(“中学3年生以上\n”);
}

上記の例は、年齢を表す変数ageを元に分岐させています。

次に、項番2のOR条件を使用した例です。

unsigned int num;  // 数字を表す変数
//----------中略-----------

if((num % 2 == 0) || ( num % 3 == 0))
{
    printf(“変数numは2、または3の倍数です。\n”);
}
else
{
    printf(“変数numは2の倍数でも3の倍数でもありません。\n”);
}

上記の例で注目していただきたいのは、OR条件のElse節がAND条件になるということです。


3.さいごに

以上、C言語におけるif文の基本的な使い方をまとめました。C言語を扱う上でif文は必ず使用します。

また、条件式はif文以外の命令文でも使用します。なので、C言語を覚えたいと思っている方には是非覚えていただきたいと思います。

尚、本記事内で例として使用したコードはあくまで使い方を示すためのものであるため、実務での使用方法に合わないものも含まれています。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって遙かに高い水準の成果を出し、関わる全ての人々に感動を与え続ける集団でありたいと考えています。

高い水準で仕事を進めていただくためにも、弊社では次のような環境を用意しています。

  • 定年までIT業界で働くためのスキル(技術力、人間力)が身につく支援
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な人事評価制度
  • 平均残業時間17時間!毎週の稼動確認を徹底しているから実現できる働きやすい環境

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。

コメント

26卒 新卒学生向け主催企業:株式会社ボールド
どんなIT企業なら理想のエンジニアになれるのか?

2時間でIT業界の全てが分かるOne dayインターン

26卒 新卒学生向け主催企業:株式会社ボールド
どんなIT企業なら理想のエンジニアになれるのか?

2時間でIT業界の全てが分かるOne dayインターン