C言語 switch文の使い方

条件分岐のif文では、xxxの場合は○○○の処理、
zzzの場合は△△△の処理をする。

といったプログラムを作りましたが、
今回は、条件分岐が非常に多い時に
重宝するswitch文を説明します。

1~12と数字を入れると、
1月から12月までの月名を
英語で表示するプログラムを作る事にします。

#include <stdio.h>

void main(void) {
      int a;

      printf("月を入力して下さい。(1~12月)\n");
      scanf("%d", &a);

      switch (a) {
      case 1:
            printf("January\n");
            break;
      case 2:
            printf("February\n");
            break;
      case 3:
            printf("March\n");
            break;
      case 4:
            printf("April\n");
            break;
      case 5:
            printf("May\n");
            break;
      case 6:
            printf("June\n");
            break;
      case 7:
            printf("July\n");
            break;
      case 8:
            printf("August\n");
            break;
      case 9:
            printf("September\n");
            break;
      case 10:
            printf("October\n");
            break;
      case 11:
            printf("November\n");
            break;
      case 12:
            printf("December\n");
            break;
      default:
            printf("エラー\n");
      }
}
月を入力して下さい。(1~12月)
1
January
月を入力して下さい。(1~12月)
13
エラー

成功すると上記のように表示されます。
(1から12の数値以外を入力するとエラーと表示されます。)

switch文の書き方ですが、
まず、新しい記述が出てきました。

switch (a)

()の中には、比較対象とする変数などを入れます。
この場合は、変数aを対象とする。という意味になります。

続いて、case文は、「変数aが1の場合」と言う意味です。

case 1:
      printf("January\n");
      break;

そして、変数aが1の場合、
printf(“January\n”); の文が実行されます。

caseの後ろは、セミコロン(;)ではなく、
コロン(:)なので、注意してください。

break文は、switch文を抜けると言う意味です。

switch文の最後に記述されているdefaultは、
上で書いたcase文のどれにも当てはまらなかった場合。
と言う意味になります。

この場合、1~12の数値を対象としてるので、
それ以外の値の場合は、”エラー”と表示するようにしました。

default:
      printf("エラー\n");

このプログラムをif文で書き換えるとしたら、
else if ~~~と言う記述が多くなってしまい、
見た目的にも、分かりやすさ的にもswitch文に軍配が上がります。

if文とswitch文のどちらを使うかは、その時の状況に応じて
適切に使い分けて下さい。