6−5.switch文

(1)switch文

条件式を判定して多方向分岐を行います。

(形式)
switch (式) {
	case定数式1:
		文1;
		break;
	case定数式2:
		文2;
		break;
	|
	|
	case定数式n:
		文n;
		break;
	default:
		文;
		break;
}
(フローチャート)

式の値が

定数式1 と等しければ、文1 実行

定数式2 と等しければ、文2 実行

定数式n と等しければ、文n 実行

それ以外ならば、文実行

(例)
int a;

scanf("%d", &a);
switch (a) {
	case 1:
		printf("a = 1\n");
		break;
	case 3:
		printf("a = 3\n");
		break;
	case 5:
		printf("a = 5\n");
		break;
	default:
		printf("others\n");
		break;
}
(特記事項)
  • 「break」に出会うとswitchの {} を抜ける。

    「break」がないと、それ以下の文を全て実行してしまうので、「break」を忘れないこと。

  • 一致する定数式がないときは、「default」部分に記述された文を実行。「default」部は省略可。
  • 文は複数行の文も可。ただし、複数行でも { } は不要。
  • 「式」は整数を結果とするもののみ可。
    正しい式誤った式
    int a;
    
    switch (a) 
    switch (a + 10)
    
    char moji;
    
    switch (moji)
    
    float a;
    
    switch (a)
    
  • 「定数式」は整数、文字定数、定数の式のみ。

    その他はelse ifを用いる。

    正しいcase句の例
    case 1: (整数)
    case 'A': (文字定数)
    case LIMIT: (記号定数
    誤ったcase句の例
    case 0.1: (浮動小数点数は不可)
    case x > 5: (大小比較は不可)
    case "XYZ": (文字列は不可)
    

(2)複数 case句を使った switch文

分岐先を示す case句を複数つけた switch文です。

(例)
int a;

scanf("%d", &a);
switch (a) {

	case 10:
	case 11:
	case 12:
		printf("10 〜 12\n");
		break;
	case 13:
	case 14:
	case 15:
	case 16:
		printf("13 〜 16\n");
		break;
	case 17:
	case 18:
		printf("17, 18\n");
		break;
	default:
		printf("その他\n");
		break;
}
(フローチャート)
(特記事項)
  • case句は分岐先を示すラベルである。

    switch文では 1つの処理に対して複数の case句を記述することができる。

演習
◆◆前ページ  ▲TOP▲  次ページ◆◆

banner
「初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved