Project_OKI’s diary

エンジニアの勉強ブログ

C言語基礎知識5(switch文)

C言語のswitchの使い方の学習

1.目的

  • C言語でswitch文(条件分岐)について理解する。

目次

2.switch文とは

 もし、AならばBしろのように、条件によって、処理を変えるためのもの。

 役割としてはif文と同じ。

 

 書き方:

     switch(変数名) {
       case 条件:
        処理
        break;
       case 条件:
        処理
        break;
       case 条件:
        処理

        break;
       }

3.プログラムの作成

switch文を使って、変数の値によって違う処理を実行することを確認する。

#include <stdio.h>
int main(void){
    // Your code here!
    //変数宣言
    int a;
    a = 1;
    //aの値によって、処理を変更
    switch(a){
        case 1://a=1の時実行
            printf("a1=%d",a);
            break;
        case 2://a=2の時処理実行
            printf("a2=%d",a);
            break;
        case 3://a=3の時処理実行
            printf("a3=%d",a);
            break;
        default://a=1,2,3以外のとk処理実行
            printf("a=%d(default)",a);
            break;
    }
}

結果:https://paiza.io/projects/UmIZWgFX_TH3TlA5iSF0iw

 

4.プログラム説明

 (1)  switch(a){

  変数aの値によって、処理を分岐

 (2) case 1:

      変数aの値が1だった時、処理を実行する。

 (3) default:

     変数aがcaseで指定されている条件以外だった場合、実行する。

 

5.プログラム作成2(よく使うやり方など) 

typedef enum{
    MODE1,  //0
    MODE2,  //1
    MODE3   //2
}Mode1;     //名前

#include <stdio.h>
int main(void){
    // Your code here!
    //変数宣言
    int state;
    
    state = 0; //初期化処理
    state = MODE2; //モード設定
    
    switch(state){
        case MODE1:
        default:
            printf("mode1実行");
            break;
        case MODE2:
            printf("mode2実行");
            break;
        case MODE3:
            printf("mode3実行");
            break;
    }
}

実行結果:https://paiza.io/projects/AIB4gfZ2mUnaWkWhuvFYfg?language=c

 (1)  typedef enum{

   ・列挙型

   ・変数に一連の整数値を付けるのに使用する。

   ・今回の場合は、MODE1に0、MODE2に1、MODE3に2を設定している。

   ・これにより、ただ数値で分岐が書いてあるより、動作が分かりやすくなる。

 

6.プログラム作成(switchに使用できる条件)

typedef enum{
    MODE1,  //0
    MODE2,  //1
    MODE3   //2
}Mode1;     //名前

#include <stdio.h>
int main(void){
    // Your code here!
    //変数宣言
    int state;
    int test=1;         //変数testの宣言
        
    state = 0;        //初期化処理
    state = MODE3;      //モード設定
    const int B = 2;    //constで定数を宣言

    switch(state){
        case MODE1:
        default:
            printf("mode1実行");
            break;
        case test:     //これはエラー
            printf("test");
            break;
        case state<5:  //これはエラー
            printf("test2");
            break;
        case B:         //これは出来る。
            printf("tes3");
            break;
    }
}

実行結果: https://paiza.io/projects/oDU9aQ1ocBdTpEI32Y6-rg?language=c

  ※switchには、ifのように等号(=)や不等号(<)を用いた条件の指定はできない。

  条件に設定できるのは、定数のみ。

  そのため、in test;のように、変数に数値を入れたものも条件としては使えない。

 

関連記事

記事一覧:

C言語

組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary

C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary

C言語基礎知識3(配列) - Project_OKI’s diary

C言語基礎知識4(if文) - Project_OKI’s diary

C言語基礎知識5(switch文) - Project_OKI’s diary

知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - Project_OKI’s diary

組み込みC言語基礎知識6(関数) - Project_OKI’s diary

組み込みC言語基礎知識7(構造体1) - Project_OKI’s diary

 

参考

dotinstall.com