[C언어 스터디 - 08] 열거형 (enum)]

2020. 6. 28. 11:0003. Resources/C, C++

728x90
반응형

열거형 사용하기

참고 문헌 (Ch 57): https://dojang.io/mod/page/view.php?id=480

열거형 정의하기

열거형을 사용하면 상수를 좀 더 편하게 정의 가능!

enum 을 이용하여 정의

enum 열거형이름 {
    값1 = 초깃값,
    값2,
    값3
};

열거형 변수의 선언: enum (열거형 이름) (변수 이름);

예시 (요일)

#include <stdio.h>

enum DayOfWeek {    // 열거형 정의
    Sunday = 0,         // 초깃값 할당
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
};

int main()
{
    enum DayOfWeek week;    // 열거형 변수 선언

    week = Tuesday;    // 열거형 값 할당

    printf("%d\n", week);   // 2: Tuesday의 값 출력

    return 0;
}

물론 모든 값을 하나하나 정의할 수도 있음

enum Value {
    ValueA = 1,
    ValueB = 3,
    ValueC = 7,
    ValueD = 11
};

역시 typedef 를 적용해서 익명 열거형으로도 이용할 수 있음

typedef enum 열거형이름 {
    값1 = 초깃값,
    값2,
    값3
} 열거형별칭;

typedef enum {
    값1 = 초깃값,
    값2,
    값3
} 열거형별칭;

// e.g.
typedef enum {    // 익명 열거형 정의
    Sunday = 0,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
} DayOfWeek;      // typedef를 사용하여 열거형 별칭을 DayOfWeek로 정의

DayOfWeek week;    // 열거형 별칭으로 공용체 변수 선언

구조체와 마찬가지로 열거형을 정의하는 동시에 변수 선언도 가능

enum 열거형이름 {
    자료형 멤버이름;
} 변수;

열거형을 switch에 활용하기

활용하는 방법

switch (열거형변수)
{
case 열거형값:
    실행할코드;
    break;
}

예시

#include <stdio.h>

enum LuxSkill {
    LightBinding = 1,
    PrismaticBarrier,
    LucentSingularity,
    FinalSpark
};

int main()
{
    enum LuxSkill skill;    // 열거형 변수 선언

    skill = LightBinding;    // 열거형 값 할당

    switch (skill)
    {
    case LightBinding:         // 열거형 값이 LightBinding일 때
        printf("LightBinding\n");
        break;
    case PrismaticBarrier:     // 열거형 값이 PrismaticBarrier일 때
        printf("PrismaticBarrier\n");
        break;
    case LucentSingularity:    // 열거형 값이 LucentSingularity일 때
        printf("LucentSingularity\n");
        break;
    case FinalSpark:           // 열거형 값이 FinalSpark일 때
        printf("FinalSpark\n");
        break;
    default:
        break;
    }

    return 0;
}
// 결과 : LightBinding
반응형