switch文

広告

条件分岐の中には変数に格納されている値を色々な値と比較したい場合があります。「if」文を使っても次のように記述することが出来ます。

int x = 3;

if (x == 1) {
  printf("数値は1です¥n");
}else if (x == 2) {
  printf("数値は2です¥n");
}else if (x == 3) {
  printf("数値は3です¥n");
}else{
  printf("他の値です¥n");
}

本来「if」文は条件式の箇所に任意の条件式を記述できますが、上記のようにある変数の値を色々な値と比較したい場合には「switch」文を使うと便利な場合があります。「switch」文の書式は次のようになっています。

switch(式){
  case 定数1:
    式が定数1の時に実行する処理;
    ...
    break;
  case 定数2:
    式が定数2の時に実行する処理;
    ...
    break;

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

「式」には整数の値、又は整数の値になる式を記述します。例えば整数型の値を持つ変数や、その変数に対して「変数 + 10」のように整数値の結果となる式などです。

そして「式」の値と比較するための値を定数として「case」の後に記述していきます。「式」は整数の値ですから比較するための定数も整数の値となります。また定数には変数は使用できませんので固定の値を記述します。

「case」は何個でも記述できますので比較したい整数値の数だけ記述して下さい。またどの定数にも一致しなかった場合に処理を行いたい場合には「default:」の後に記述します。

実際のプログラム例としては次のようになります。

int x = 3;

switch(x){
  case 1:
    printf("数値は1です¥n");
    break;
  case 2:
    printf("数値は2です¥n");
    break;
  case 3:
    printf("数値は3です¥n");
    break;
  default:
    printf("他の値です¥n");
}

なお「break」については次のページで詳しく見ていきます。

サンプルプログラム

では簡単なサンプルプログラムを作成して試してみます。

test6-1.c

#include <stdio.h>

int main(void){
  int num;

  num = 2;
  printf("num = %d¥n",num);

  switch(num){
    case 1:
      printf("数値は1です¥n");
      break;
    case 2:
      printf("数値は2です¥n");
      break;
    case 3:
      printf("数値は3です¥n");
      break;
    default:
      printf("他の値です¥n");
  }

  return 0;
}

上記を「test6-1.c」の名前で保存します。まずコンパイルを行います。

条件分岐(switch)

コンパイルが終わりましたら「test6-1」と入力して実行します。

条件分岐(switch)

( Written by Tatsuo Ikura )