C言語

【C言語】switch文を使った条件分岐

この記事では、C言語で switch文 を使って条件分岐する方法を解説します。

C言語の制御構文には、if文 の他に switch文 と呼ばれるものが用意されています。

if文 は、指定した条件式の結果によって処理を分岐しましたが、switch文 は、指定した式と同じ値があるかどうかで処理を分岐します。

それでは、switch文 の使い方を見ていきましょう!

switch文の構文

switch文 は、switch, case, break, default を使って定義します。

switch(式){
  case 定数1:
    式が定数1と一致する場合に実行する処理;
    break;

  case 定数2:
    式が定数2と一致する場合に実行する処理;
    break;

  default:
    どの定数にも一致しない時に実行する処理;
}
  • 式が case で指定した定数と一致すれば処理が実行される
  • case は いくつでも記述可能
  • default は あっても無くても良い

サンプル

簡単なサンプルを見てみます。以下のコードは、n変数 の値によって処理を分岐する switch文 を実装しました。n変数 の値を変えて実行してみてください。

#include <stdio.h>

int main() {

    int n = 1;

    switch(n){
        case 1:
            printf("1です!\n");
            break;
        case 2:
            printf("2です!\n");
            break;
        default:
            printf("デフォルト\n");
    }
}

実行結果

1です!

異なる定数で同じ処理を行う

1つの処理に対して複数の定数を用意することで異なる定数で同じ処理を行うことができる。

例えば以下のように case 定数1: の下に case 定数2: を記述することで 定数1 と 定数2 で同じ処理を実行することができます。

switch(式){
    case 定数1:
    case 定数2:
        式が定数1か定数2と一致する場合に実行する処理;
        break;

    default:
        どの定数にも一致しない時に実行する処理;
}

サンプル

以下のコードでは、キーボートから値を受け取り、その値によって処理を分岐します。

#include <stdio.h>

int main() {

    int n;

    // キーボードから値を読み込む
    scanf("%d", &n);
    
    switch(n){
        case 1:
        case 2:
            printf("1 か 2です!\n");
            break;

        case 3:
        case 4:
            printf("3 か 4です!\n");
            break;

        default:
            printf("デフォルト\n");
    }
}

実行結果

% ./main            
1
1 か 2です!
% ./main
2
1 か 2です!
% ./main
3
3 か 4です!
% ./main
4
3 か 4です!
% ./main
5
デフォルト

列挙型と組み合わせる

switch文 は、列挙型と相性が良いです。列挙型のオブジェクトを switch文 の式として渡すことで列挙型の定数で条件分岐することができます。

#include <stdio.h>

enum gender {
    Man,
    Woman,
    Other
};

int main(void){

    enum gender person = Man;

    switch(person) {
        case Man:
        printf("男性\n");
        break;

        case Woman:
        printf("女性\n");
        break;

        case Other:
        printf("その他\n");
        break;
    }
}

実行結果

男性

まとめ

この記事では、C言語の switch文 を使って条件分岐する方法を解説します。

値のパターンがある程度決まっている場合や列挙型を使って分岐を行いたい場合に switch文 を使うとシンプルに記述できて便利です。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

C言語おすすめ参考書
MMGames (著), 秀和システム(出版)
中山 清喬 (著), 株式会社フレアリンク (著)