この記事では、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文を使うとシンプルに記述できて便利です。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ


