月ノ書

<C言語>列挙型

今回の記事でわかること
  • 列挙型の使い方が分かる
  • 定数をまとめて管理する方法が分かる
  • if や switch での使い方が理解できる

列挙型とは

列挙型(enum)は、複数の定数をまとめて管理するための型です
例えば、曜日やゲームの応対など、限られた選択肢を名前で表現したいときに便利です

#include <stdio.h>

enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };

int main(void) {
    enum Weekday today = WEDNESDAY;

    printf("今日は %d 日目の曜日です\n", today);
    return 0;
}

/*出力結果
今日は 3 日目の曜日です
*/

列挙型では最初の値は0からスタートし、値は順番に1つずつ増えます(必要なら自分で指定も可能)

値を自分で指定する

#include <stdio.h>

enum Weekday { SUNDAY = 1, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };

int main(void) {
    enum Weekday today = WEDNESDAY;

    printf("今日は %d 日目の曜日です\n", today);
    return 0;
}

/*出力結果
今日は 4 日目の曜日です
*/

この場合、SUNDAY が1、MONDAY が2…のように値が設定されます

switch 分で使う例

列挙型と switch を組み合わせると、値に応じた処理を分かりやすく書けるようになります

#include <stdio.h>

enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };

int main(void) {
    enum Weekday today = FRIDAY;

    switch(today) {
        case MONDAY:
            printf("月曜日です\n");
            break;
        case FRIDAY:
            printf("金曜日です!\n");
            break;
        default:
            printf("その他の曜日です\n");
    }

    return 0;
}

/*出力結果
金曜日です!
*/

switch の case に列挙型の値を直接指定でき、コードが読みやすく間違えにくくなります

列挙型を使うメリット

学習進捗

0
Would love your thoughts, please comment.x