switch文

switch文とは、プログラミング言語において指定した制御式を評価し、多分岐を行う為の制御構文の一つです。
指定された制御式をcase分けし、任意の位置からの命令文を実行することで処理を分岐させます。
ただし、この分岐は指定されたcaseの位置より実行しているに過ぎない為、制御式に該当するケース以降すべての処理が実行されます。
このルールをフォールスルー(fall through)と言い、制御の流れが合流する動作をさせたい場合に便利ですが、バグの温床として問題視されることがあります。
その為、switch文を任意の場所で抜けさせるためにはbreak文を記述する必要があります。

switch文の利用

switch文では制御式とcaseで記述された各値を評価し、該当するcaseより処理を実行します。
switch文にて制御式を評価した際に該当するケースが存在しない場合、defaultに引き続く命令文より開始されます。
もし、defaultが記述されていなければ、何も実行せずにswitch文を抜けます。

switch文は以下の方法で記述します。

構文

switch (制御式) 
{
    case 値1:
        ... 命令文; ...
        break;    
    case 値2:
        ... 命令文; ...
        break;    
    default:
        ... 命令文; ...
        break;
}

switch文を使用した記述例

// switch文 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 = B_PLUS;                // 評価
	
    // 評価によってコメントを判定します
    switch (rank)
    {
        case A_PLUS:	// A+ 
        case A:		// A 
        case A_MINUS:	// A- 
            strncpy(comment, "Graet!!", sizeof(comment));
            break;    
        case B_PLUS:	// B+ 
        case B:		// B 
        case B_MINUS:	// B- 
            strncpy(comment, "OK...", sizeof(comment));
            break;    
        default:
            break;    
    }

    printf("Rank > %d %s\n", rank, comment);    
        
    return 0;
}

上記例ではフォースルーを利用し、複数のケース(A+~A-用とB+~B-用)で同一の処理を実行しております。

実行結果

Rank > 3 OK...


Last updated:2017/06/12
Author:efn

';