switch(判定する変数・式・関数)
{
case 値1:
...処理;
break;
case 値2:
...処理;
break;
...
default:
...処理;
break;
}
C/C++でswitch~case文を使った条件分岐処理を紹介します。
switch文の書式は下記です。
switch(判定する変数・式・関数)
{
case 値1:
...処理;
break;
case 値2:
...処理;
break;
...
default:
...処理;
break;
}
defaultは省略可能です。
switch(判定する変数・式・関数)
{
case 値1:
...処理;
break;
case 値2:
...処理;
break;
...
case 値n:
...処理;
break;
「判定する変数・式・関数」の値をcase文で判定し、条件と一致する場合はcaseに続く処理を実行します。どの条件にも当てはまらなかった場合は、default:ブロック内の処理を実行します。C/C++ではcaseブロックの中にbreak,returnといったswitch文から抜ける記述は必須ではありません。(C#は必ず必要であり、break,returnがない場合はコンパイルエラーとなります。
コンソールアプリケーションを作成し、下記のコードを記述します。
#include "stdafx.h"
#include <stdlib.h>
int main()
{
printf("数値を入力してください。");
char buffer[8];
fgets(buffer, 8, stdin);
int value = atoi(buffer);
switch (value) {
case 0:
printf("0が入力されました。");
break;
case 1:
printf("1が入力されました。");
break;
case 2:
printf("2が入力されました。");
break;
case 3:
printf("3が入力されました。");
default:
printf("定義されていない値が入力されました。");
}
return 0;
}
下記コードで、アプリケーションを実行すると、「数値を入力してください。」のメッセージが表示され、入力待ちになります。入力された値は、atoi関数でint型の値に変換されます。
printf("数値を入力してください。");
char buffer[8];
fgets(buffer, 8, stdin);
int value = atoi(buffer);
下記コードがswitch文になります。入力された値に応じたメッセージが画面に表示されます。入力された値が0,1,2,3の場合は値に応じたメッセージが表示され、それ以外の場合は「定義されていない値が入力されました。」のメッセージが表示されます。
switch (value) {
case 0:
printf("0が入力されました。");
break;
case 1:
printf("1が入力されました。");
break;
case 2:
printf("2が入力されました。");
break;
case 3:
printf("3が入力されました。");
default:
printf("定義されていない値が入力されました。");
}
プロジェクトを実行します。コマンドプロンプトウィンドウが表示され、下図の画面が表示されます。
数値を入力します。"2"を入力し[Enter]キーを押します。
「2が入力されました。」のメッセージが表示されます。
"0"を入力した場合は「0が入力されました。」のメッセージが表示されます。
8を入力した場合は、caseにない値のため、defaultのブロックが実行され、「定義されていない値が入力されました。」のメッセージが表示されます。