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

Last updated:2017/08/12
Author:efn

';