[C언어/C++] 열거형 enum 사용법 & 예제

    열거형이란?

    열거형은 사용하면 변수가 갖는 값에 의미를 부여할 수 있고 프로그램 가독성이 향상됩니다. 열거형은 명명된 정수형 상수의 집합으로 구성됩니다. 열거형을 선언하면 컴파일러는 열거형 멤버들을 정수형 상수로 인식합니다. enum 형식의 변수를 인덱싱 식에서 사용할 수 있으며 모든 산술 및 관계형 연산자의 피연산자로 사용할 수 있습니다. 열거형 상수 또는 열거형 형식의 값은 C 언어에서 정수 식을 허용하는 모든 곳에서 사용할 수 있습니다.

     

     열거형(enum) 사용법 

    열거형 만들기

    //문법
    enum 열거형 이름{상수 이름};
    
    //ex
    enum week{SUN, MON, TUE, WED, THU, FRI, SAT};
    

    열거형을 만드는 방법은 구조체와 비슷한데 구성은 열거형은 열거형 키워드(enum), 열거형 이름, 상수 이름으로 구성됩니다. 열거형 키워드는 enum을 사용하면 되며 열거형을 대표하년 열거형 이름을 지정하고 데이터로 사용할 상수들을 포함시켜 선언합니다.

     

    열거형 사용

    #include <stdio.h>
    
    enum season
    {
        SPRING, SUMMER, FALL, WINTER
    };
    
    int main(void)
    {
        printf("SPRING : %d \n", SPRING);
        printf("SUMMER : %d \n", SUMMER);
        printf("FALL : %d \n", FALL);
        printf("WINTER : %d \n", WINTER);
    
        return 0;
    }
    
    

    열거형 session은 초기화를 하지 않으면 위와 같이 0부터 시작됩니다. 열거형 상수에 값을 넣어서 초기화를 할수도 있습니다.

     

    #include <stdio.h>
    
    enum season
    {
        SPRING, SUMMER = 2, FALL, WINTER
    };
    
    int main(void)
    {
        printf("SPRING : %d \n", SPRING);
        printf("SUMMER : %d \n", SUMMER);
        printf("FALL : %d \n", FALL);
        printf("WINTER : %d \n", WINTER);
    
        return 0;
    }
    
    

    초기화를 하게되면 위와 같이 값을 지정해줄 수 있고 그 이후의 원소들은 값이 1씩 증가하여 자동적으로 설정됩니다.

     

    #include <stdio.h>
    
    enum season
    {
        SPRING, SUMMER = 2, FALL, WINTER
    };
    
    int main(void)
    {
        enum season birthday = FALL;
        printf("birthday : %d \n", birthday);
    
        return 0;
    }
    
    

    위와 같이 enum을 사용하여 변수를 만들고 그 변수에 특정 멤버변수로 지정하여 사용할 수도 있습니다.

     

    enum과 Switch문

    #include <stdio.h>
    
    enum Action {
        Attack = 1,
        Move,
        Jump,
        Hide
    };
    
    int main()
    {
        enum Action skill; // 열거형 변수 선언
        skill = Attack; // 열거형 값 할당
    
        switch (skill)
        {
        case Attack: // 열거형 값이 Attack일 때
            printf("Attack\n");
            break;
        case Move: // 열거형 값이 Move일 때
            printf("Move\n");
            break;
        case Jump: // 열거형 값이 Jump일 때
            printf("Jump\n");
            break;
        case Hide: // 열거형 값이 Hide일 때
            printf("Hide\n");
            break;
        default:
            break;
        }
    
        return 0;
    }
    

    enum을 사용하면 좋은 대표적인 예가 바로 Switch문을 사용할때입니다. 단순히 숫자 case 1: , case 2: 이런식으로 숫자를 나열하는것보다 enum을 사용하는것이 훨씬 가독성이 좋겠죠?

     

    typedef 사용하기

    #include <stdio.h>
    
    typedef enum season
    {
        SPRING, SUMMER = 2, FALL, WINTER
    }SEASON;
    
    int main(void)
    {
        SEASON birthday = FALL;
        printf("birthday : %d \n", birthday);
    
        return 0;
    }
    
    

    typedef를 사용하여 enum 키워드를 생략할수도 있습니다.

    댓글(0)

    Designed by JB FACTORY