auの日記

プログラミング初心者の日記。(auはハンドルネームです)

C言語でswitch文

auです。
C言語でswitch文の使い方について調べたのでまとめたいと思います。

switch文はいつ使うか

switch文は条件によって処理を分けるときに使います。
例えば、順位によって何位ですという文を表示したり、サイコロの目によって処理を変えたりできます。ようはif文と同じ分岐処理です。
switch文とif文の違いは、二分岐と多分岐での処理速度の速さが変わることです。
二分岐:20歳以上でお酒が買えるか、買えないかみたいな2通り(TrueかFalse)しかない分岐
多分岐:サイコロ(1~6)を振った際に出た目によって変わるような、3つ以上の分岐

二分岐ではif文のほうが早く、多分岐ではswitch文のほうが早く処理が終わるという違いがあります。
if文は上から順番に処理していくのに対し、switch文は同じ数字を見つけるという処理の手順になるため、処理速度に差がでるそうです。

switch文を使ってサイコロの目を出してみる

switch文を実際に使ってみます。
switch文の書き方は以下の通りです。

switch(式) {
    case 場合1:
        式が場合1と一致したときの処理
        break;
    case 場合2:
        式が場合2と一致したときの処理
        break;
    default:
        式がどの場合とも一致しなかったときの処理
}

サイコロの場合で書いてみます。

#include<stdio.h>

int main(){
    int dice;
    dice = 2;
    switch(dice) {
      case 1:
        printf("サイコロの目は1です\n");
        break;
      case 2:
        printf("サイコロの目は2です\n");
        break;
      case 3:
        printf("サイコロの目は3です\n");
        break;
      case 4:
        printf("サイコロの目は4です\n");
        break;
      case 5:
        printf("サイコロの目は5です\n");
        break;
      case 6:
        printf("サイコロの目は6です\n");
        break;
      default:
        printf("サイコロの数は1~6までです\n");
    }
}

実行結果

サイコロの目は2です

まずint型のdiceを宣言して、diceに2を代入します(これがサイコロの目です)。
その後にswitch(dice)として、diceには2が代入されているので、2の場合の処理をしてくれるようにします。
その下にcaseを使って場合の処理をそれぞれ書きます。
そして最後に、defaultを使ってどの場合にも合わなかったときの処理をします。