C言語での条件分岐-switch文

記事内に広告が含まれています。

C言語のswitch文はcaseで指定した値と一致した時に処理を行うための構文です。

C言語での条件分岐-switch文

switch文はcaseで指定した値と一致した時に処理を行うための構文です。

switch文の構文

switch文の構文は以下のように指定値を分岐させたいラベルで
指定します。

switch( 指定値 ){
case 1 :
処理1;
処理2;
break ;
case 2 :
処理3;
処理4;
break ;
default :
処理5;
処理6;
break ;

}

switch文は条件分岐したい分のcaseを記述することができます。
また、caseのラベルの最後には「:」を付けます。

条件分岐の区切りは「break」で区切ります。

「default」は「これまでにcaseに書かれた条件以外の時」の意味です。

具体的なソースのサンプルは

    switch( i ){
        case 0 :
            ret = OK ;
            break ;
        case -1 :
            ret = NG ;
            break ;
        case -2 :
            ret = DB_EEROR ;
            break ;
        default :
            ret = EEROR ;
            break ;
    }

のように使います。

また、if文の「OR条件(||)」はcaseを複数個列挙して表現します。

    switch( i ){
        case 0 :      //iが0または
        case 1 :      //iが1または
        case 2 :      //iが2の時
            ret = OK ;
            break ;
        case -1 :
            ret = NG ;
            break ;
        case -2 :
            ret = DB_EEROR ;
            break ;
        default :
            ret = EEROR ;
            break ;
    }

注意しないといけないのは「break」までが1つの条件内の処理に
なるので

    switch( i ){
        case 0 :      //iが0または
        case 1 :      //iが1または
        case 2 :      //iが2の時
            ret = OK ;
//            break ;   //breakがないのと同じ
        case -1 :
            ret = NG ;
            break ;
        case -2 :
            ret = DB_EEROR ;
            break ;
        default :
            ret = EEROR ;
            break ;
    }


iが0,1,2,-1の時にretがNGになってしまいます。
(0,1,2の時にセットしたret=OKは上書きされます。)

また「指定値」には「文字」も指定できます。

    switch( i ){
        case 'A' :
            ret = OK ;
            break ;
        case 'B' :
            ret = NG ;
            break ;
        case 'C' :
            ret = DB_EEROR ;
            break ;
        default :
            ret = EEROR ;
            break ;
    }

今回示した例のswitch文はif文で書きかえることが可能です。

    if( i == 0 ){
        ret = OK ;
    } else if( ret == -1 ){
        ret = NG ;
    } else if( ret == -2 ){
        ret = DB_EEROR ;
    } else {
        ret = EEROR ;
    }
タイトルとURLをコピーしました