1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

【C言語超入門(第25回)】多方向の分岐ではswitch文を使おう

Pocket

プログラミングをしていますと、ある複数の条件の中から、いずれかに一致したときに、その条件に応じた処理を実行したい、というケースがありますね。

特定の条件に応じて処理を分岐するために if文 を使うことが一般的ですが、処理を分岐する条件が多数に及ぶ場合、
プログラムの読みやすさが低下してしまう恐れがあります。

そのためC言語では、複数の条件がある分岐処理を分かりやすく表現できるよう、switch文 が用意されています。

今回のC言語超入門は、多方向分岐を行う switch文 の使い方について解説していきます。

switch文の書式

switch文 の基本的な書式は以下のとおりです。

switch文は式を評価し、評価結果と一致するcaseに処理を分岐して実行します。

もし式と一致するcaseがないときは、自動的にdefault文に記述した処理を実行します。

なお、default文の記述は必須ではありませんので、必要ない場合は省略することができます。

switch文の基本的な使い方

if文 と switch文 は、どちらも分岐処理を行いますが、複数の条件がある分岐処理を行う場合は、
switch文 で記述した方が、プログラムの流れが分かりやすくなります。

プログラム例を参考に、switch文 の基本的な使い方を見ていきましょう。

以下のプログラム1は、0〜6の数値ごとに処理を分岐して、数値が0なら「日曜日」、1なら「月曜日」・・・、6なら「土曜日」と表示するプログラムです。

 

では、このプログラム1を使って、switch文のポイントをご説明していきます。

switch文の「式」と「定数式」は整数型のみ有効

「switch (式)」の「式」に該当する箇所と、「case 定数式:」の「定数式」に該当する箇所は、整数型でなければなりません。

例えば以下のように、式にdouble型の変数を使うことはできません。

また定数式には、以下のように、条件式や文字列を記述することもできません。

もし、上記のような使い方をしたい場合は、if文を使って条件分岐を表現します。

caseは処理の実行範囲を定めるものではない

switch文を使ったプログラム1を見ますと、case文が実行範囲を指定しているように見えるかもしれません。

ですがC言語においてcaseは、分岐先のラベルとしての役割しかありません。

つまり分岐処理を終わらせたいときは、break文が必要です。

break文または、switch文の終了まで処理の実行が続きます。

break文が見つかるまで処理が実行される特性を逆手に取りますと、複数のcaseラベルで同じ処理文を実行させることもできます。

以下のプログラム2は、ある月の日数を表示するプログラムです。

caseラベルとbreak文の関係に注目してみてください。

switch文の代わりにif文を使うことも可能

switch文を使ったプログラムは、if文を使って表現することもできます。

以下のプログラム3は、プログラム1と同じ動作をするように、if文で表現したプログラムです。

C言語超入門の第25回まとめ

今回のC言語超入門では、いくつかの選択肢の中から多方向に分岐処理を行いたいときに便利なswitch文について、お伝えいたしました。

最後に、改めてswitch文のポイントをまとめておきます。

・switch文に記載した式を評価し、評価結果と一致するcaseに処理を分岐して実行する
・switch文による分岐は整数のみ。条件式や文字列は使用できない
・caseはラベルであり処理の実行範囲を決めるものではない

ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

プログラミングで挫折しそうなら、現役エンジニアにマンツーマンで相談してみませんか?オンラインのプログラミングスクール「TechAcademy」のメンターが対応。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る