if...else文
if文とは、プログラミング言語において真理値に従い、条件分岐を行う為の制御構文の一つです。
指定された条件式に従い、条件式の評価結果が「真(true)」として扱われる場合に実行する処理への分岐を行います。
また、条件式の評価結果が「偽(false)」として扱われる場合に特定の処理を実施する場合、else文を使用します。
これらの条件分岐時に実行される命令文はそれぞれ「then節」、「else節」と呼ばれ、一つの文、若しくは「{}」で囲まれる複数の文を記述します。
if...else文の利用
if文は条件式の評価結果が「真」である場合、続けて記述された命令文(then節)を処理します。
評価結果が「偽」であり、else文が記述されている場合、else文に続く命令文(else節)を処理します。
もし、else文が記述されていなければ、何も実行せずにif文を抜けます。
if...else文は以下の方法で記述します。
構文
if (条件式) 命令文; else 命令文;
if (条件式) { ... 命令文; ... } else { ... 命令文; ... }
if...else文を使用した記述例
論理演算子を使用することにより、複数の条件を組み合わせて指定することが可能です。
「||」は論理和(...または...)、「&&」は論理積(...かつ...)を表します。
// if...else文 program in C.
#include <stdio.h>
#include <string.h>
// 評価 一覧
enum Rank { A_PLUS, A, A_MINUS, B_PLUS, B, B_MINUS };
int main(int argc, char *args[])
{
char comment[12]; // コメント
enum Rank rank = A_PLUS; // 評価
int point = 80; // ポイント
// then節、else節が1文である場合の記述
if (rank == A_PLUS || rank == A)
point += 10;
else if (rank == A_MINUS)
point += 5;
else
point += 1;
// then節、else節が複文である場合の記述
if (point > 85 && rank == A_PLUS)
{
point += 5;
strncpy(comment, "Graet!!", sizeof(comment));
}
else
{
strncpy(comment, "OK...", sizeof(comment));
}
printf("Rank:%d Point:%d %s\n", rank, point, comment);
return 0;
}
実行結果
Rank:0 Point:95 Graet!!
if文での条件式を省略した記述例
if文は、0が偽、0以外が真であることを用いて、次のように簡潔に書き換えることができます。
// if...else文 program in C.
#include <stdio.h>
#include <string.h>
int main(int argc, char *args[])
{
int value = 0; // 値
int result = 0; // 結果
// if(value != 0) と同義
if (value)
result += 1;
else
result += 2;
// if(value == 0) と同義
if (!value)
result += 4;
else
result += 8;
printf("result:%d\n", result);
return 0;
}
実行結果
result:6