C/C++で if文を使った条件分岐処理について紹介します。
C/C++ では if文を利用すると条件式が真である場合、偽である場合で処理を分岐させることができます。
下記の書式を利用します。
条件式が真である場合に中括弧のブロック"{ ... }"内のコードが実行されます。
条件式が真である場合にif文直後の中括弧のブロック"{ ... }"内のコードが実行されます。条件式が偽である場合にはelseの後の中括弧のブロック"{ ... }"内のコードが実行されます。
下記の書式の場合は、最初に[条件式1]の式が評価され、真であれば直後のブロック内のコードが実行されます。[条件式1]が偽であった場合は、[条件式2]が評価されます。[条件式2]が真であれば、直後のブロックのコードが実行されます。偽である場合は以降のelse if の条件式を順に評価します。
下記の書式の場合も先の動作と同じですが、if, else if すべての条件式が偽であった場合は、else のブロック内のコードが実行されます。
条件式が真である場合は[処理]に記述したコードが実行されます。
条件式が真である場合は[処理1]に記述したコードが実行されます。条件式が偽である場合はelseの後ろの[処理2]のコードが実行されます。
if文を利用したプログラム例を紹介します。
コンソールアプリケーションを作成し、下記のコードを記述します。
#include "stdafx.h"
#include <stdlib.h>
int main()
{
printf("数値を入力してください。\r\n");
char buffer[16];
fgets(buffer, 16, stdin);
int value = atoi(buffer);
if (5 < value) {
printf("入力された数値は5より大きいです。\r\n");
}
else {
printf("入力された数値は5以下です。\r\n");
}
fgets(buffer, 16, stdin);
return 0;
}
下記のコードで、「数値を入力してください。」のメッセージを表示し、その後入力待ち状態になります。入力された数値は atoi()
関数を用いて数値に変換しvalue
変数に格納します。
printf("数値を入力してください。\r\n");
char buffer[16];
fgets(buffer, 16, stdin);
int value = atoi(buffer);
下記コードがif文による条件判定、分岐処理になります。今回のコードではvalue変数の値が 5以上であればif文のブロック内のprintf()のコードが実行されます。value変数の値が5以下の場合はif文の条件式は偽となるので、else以下の中括弧のブロック内のprintf()のコードが実行されます。
入力された数値が5より大きければ画面に「入力された数値は5より大きいです。」のメッセージが表示され、5以下の場合は「入力された数値は5以下です。」のメッセージが表示されます。
if (5 < value) {
printf("入力された数値は5より大きいです。\r\n");
}
else {
printf("入力された数値は5以下です。\r\n");
}
デバッグ時にプログラムが終了しないよう、入力待ちの状態で待機します。
fgets(buffer, 16, stdin);
プロジェクトを実行します。コンソールウィンドウが表示され、下図の画面が表示されます。「数値を入力してください」のメッセージが表示され、入力待ちの状態になります。
"8"を入力します。入力後[Enter]キーを押します。
「入力された数値は5より大きいです。」のメッセージが表示されます。
再度、プログラムを実行します。実行後入力待ちの画面で、"2"を入力します。
「入力された数値は5以下です。」のメッセージが表示されます。
if文を利用して条件により処理が分岐するロジックを実装できました。