博士「ここをチェックじゃ」

多方向分岐の制御にはelse-if文の他に、switch文も用意されておるぞい。

条件に当てはまれば全て実行してしまう「switch文」

ちと注意しなくちゃならん事があるが。
それにcaseには定数を1つしか書けないがの。

多重分岐switch文プログラムの書き方

switch ( /*式*/ ) {
   case 定数1:
      文1;
   case 定数2:
      文2;
   default:
      文3;
}

チェックポイント

フローチャート「switch文」

ぷうさん「?」

博士、「default」って何?


博士「(^^♪」

defaultは、どの条件にも該当しない場合に実行されるんじゃ。


ぷうさん

ふんふん。

switchサンプル文

#include <stdio.h>
main()
{
   int a;
   for (a=1;a<=4;a++) {
      printf("\na=%d\n",a);
      switch (a) {
         case1:
            printf(" case1");
         case2:
         case3:
            printf(" case2");
         default:
            printf(" case3");
      }
   }
}

実行結果

a=1
case1 case2 case3
a=2
case2 case3
a=3
case2 case3
a=4
case3

ポイント








博士

caseの定数に一致すると以降の実行文を全て実行してしまうんじゃ。
この場合じゃとa=1の時じゃの。


ぷうさん「?」

博士、全て実行しないようにするにはどうすればいいのですか~?


博士「Good!」

該当する処理の最後に『break』文を書いて脱出させるんじゃ。

break文を入れてswitch文を組んでみよう

上のプログラムに「break」を入れてみるかのう。

break文を入れたswitchサンプル文

#include <stdio.h>
main()
{
   int a;
   for (a=1;a<=4;a++) {
      printf("\na=%d\n",a);
      switch (a) {
         case1:
            printf(" case1");
            break;
         case2:
         case3:
            printf(" case2");
            break;
         default:
            printf(" case3");
            break;
      }
   }
}

実行結果

a=1
case1
a=2
case2
a=3
case2
a=4
case3

ポイント

フローチャート「switch文」

博士

どうかの、理解できたかの?


ぷうさん「OK」

ん・・・多分。
実行結果と卓上シュミレート結果があってたからいいんじゃない?


博士「(^^♪」

それでは、お次に行くとしよう。
ループ脱出作戦、breakとcontinueじゃ!


ぷうさん「(^^♪」

Good idea!!
break(珈琲ブレイク)してからcontinue(勉強)て言いたいわけでしょ?


困った顔の博士

残念じゃったの。おお外れじゃ!
ほれ、次じゃ、次じゃぞ。

その四 breakとcontinueを使いこなそうへ

三日目 C言語らしい書き方 目次

二日目へ

ぷうさんの七日間戦争 三日目

四日目へ