C言語のif文とは?条件分岐処理の基本となるif文の使い方
プログラミングにおいて、条件分岐処理は必要不可欠な処理になります。
C言語において、条件分岐の制御文はいくつかありますが、この記事では、条件分岐処理の基本となるif文の使い方を紹介したいと思います。
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パターンとなります。
条件分岐の順序は、記述している順序に従います。このため、順序は次のようになります。
- if文
- else if文
- 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言語を覚えたいと思っている方には是非覚えていただきたいと思います。
尚、本記事内で例として使用したコードはあくまで使い方を示すためのものであるため、実務での使用方法に合わないものも含まれています。
コメント