Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語のswitch文とは?基本構文・アルゴリズム・サンプルコードでわかりやすく解説

switch文は、複数の選択肢の中から1つだけを実行したい場合に使われる条件分岐の制御構造です。switch文は、指定した式の値を整数定数や文字定数のリストと順番に照合していき、一致するcaseが見つかった時点で、そのcaseに紐づくステートメント(文)が実行されます。

switch文の基本構文

switch文の基本的な書き方は以下の通りです。

switch (式){
   case 値1 : 文1;
      break;
   case 値2 : 文2;
      break;
   - - - - - -
   default : 文 – x;
}

処理の流れ(アルゴリズム)

switch文の動作手順は以下のようになります。

ステップ1:変数を宣言する。
ステップ2:式で使う変数の値を入力する。
ステップ3:switch(式) の評価を行う。
   値1が一致した場合:文1を実行し、breakでswitchを抜ける
   値2が一致した場合:文2を実行し、breakでswitchを抜ける
   値3が一致した場合:文3を実行し、breakでswitchを抜ける
   …………………………
   default:どのcaseにも一致しない場合に文xを実行する

C言語のswitch文とは?基本構文・アルゴリズム・サンプルコードでわかりやすく解説

サンプルプログラム1:数値の判定

次のCプログラムは、switch文を使って入力された数値を判定するシンプルな例です。

#include<stdio.h>
int main(void){
   int n;
   printf("enter a number");
   scanf("%d", &n);
   switch (n){
      case 0 : printf("zero");
         break;
      case 1 : printf("one");
         break;
      default : printf("wrong choice");
   }
   return 0;
}

実行結果

enter a number
1
one

このプログラムでは、入力された数値が「0」なら「zero」、「1」なら「one」と表示され、それ以外の場合はdefaultブロックの「wrong choice」が出力されます。

サンプルプログラム2:学生の成績判定

続いて、文字型(char型)の変数を扱うswitch文の例として、学生の成績を判定するプログラムを見てみましょう。

#include<stdio.h>
int main(){
   char grade;
   printf("Enter the grade of a student:\n");
   scanf("%c",&grade);
   switch(grade){
      case 'A': printf("Distinction\n");
         break;
      case 'B': printf("First class\n");
         break;
      case 'C': printf("Second class \n");
         break;
      case 'D': printf("Third class\n");
         break;
      default : printf("Fail\n");
   }
   printf("Student grade=%c",grade);
   return 0;
}

実行結果

Run 1: Enter the grade of a student: A
Distinction
Student grade=A
Run 2: Enter the grade of a student: C
Second class
Student grade=C

このように、switch文は整数だけでなくchar型の文字定数にも対応しており、成績評価のような多岐にわたる分岐処理を簡潔に記述できます。各caseの末尾にbreak文を置くことで、一致したcaseのみを実行してswitch文を抜けられます。なお、breakを書き忘れると後続のcaseが連続して実行される「フォールスルー」が発生するため、注意が必要です。

  1. C言語のif-else文とは?基本構文から動作原理まで実例付きで徹底解説

    if-else文は、条件が「真(true)」の場合と「偽(false)」の場合の両方に対応できる条件分岐構文です。条件式がtrueと評価されたときには「trueブロック」が実行され、falseと評価されたときには「falseブロック(elseブロック)」が実行されます。基本構文if-else文は以下のような形式で記述します。if (condition){    True block statement(s) }else{    False block statement(s) }「condition」には比較演算子や論理演算子を使った条件式を記述し、その

  2. C言語の単純if文(simple if)をわかりやすく解説

    はじめにC言語における「if」キーワードは、論理条件が真(true)と評価された場合にのみ、特定の一連のステートメントを実行するために使用される、最も基本的な条件分岐です。本記事では、単純if文(simple if)の構文、動作の仕組み、そして具体的なサンプルコードを通じてその基本を解説します。構文単純if文の構文は以下の通りです。if (condition) { Statement(s); }単純if文の動作ifブロック内のステートメントは、条件が真(true)の場合にのみ実行され、偽(false)の場合は一切実行されません。条件が真のときに実行したいステートメントが1つだけである場