본문 바로가기

프로그램언어/C언어

c언어 열거형 - enum

1. 열거형

열거형이란 정수형 상수에 기호 이름을 부여하여 값을 지정한 자료형을 말합니다.  enum 키워드를 사용하여 새로운 타입을 생성하고 그타입에 값을 지정하는 것입니다.  열거형은 프로그램의 가독성을 향상시키기 위해 사용합니다.

예를 보고 확인해 보겠습니다.

 

    enum week {sun, mon, tue, wed, thu, fri, sat};

enum 태그이름 { 열거형 상수, 열거형 상수, ... }; 

enum week {sun, mon, tue, wed, thu, fri, sat};

enum week {   0,     1,    2,     3,    4,  5,   6};

위와 같이 정수 값이 0부터 기호 이름에 들어가 있습니다. sun = 0, mon = 1, tue = 2, ... , sat = 6으로 정수 값이 지정됩니다. 기호 이름에 정수 값을 변경하여 지정 할 수 있습니다. 예를 보고 확인해 보겠습니다.

 

enum week {sun= 1 , mon, tue, wed, thu, fri, sat};

enum week {        1,      2,    3,    4,    5,  6,   7}; 

sun = 1로 지정하면 그 다음부터는 2, 3, 4 순서대로 증가 대면서 값이 지정 됩니다. 또 한 예를 확인해 보겠습니다.

 

enum week {sun= 1 , mon, tue, wed = 7, thu, fri, sat};

enum week {        1,      2,    3,         7,     8,   9, 10}; 

중간에 wed = 7로 지정하면 그 다음부터는 7, 9 , 10으로 지정 되는 것을 알 수 있습니다.

 

위 열거형을 통한 소스코드를 작성해 보자.

#include <stdio.h>
enum week { sun, mon, tue, wed, thu, fri, sat };

int main(void)
{
    enum week day;

    day = tue;
    printf("%d\n", day);

    day = fri;
    printf("%d\n", day);

    return 0;
}

실행 결과]

2

5

 

열거형을 통해 요일을 출력하는 프로그램을 작성해 보자.

#include <stdio.h>
enum week { sun, mon, tue, wed, thu, fri, sat };

int main(void)
{
    enum week day;
    day = fri;

    switch (day)
    {
    case 0:
        printf("일요일\n"); break;
    case 1:
        printf("월요일\n"); break;
    case 2:
        printf("화요일\n"); break;
    case 3:
        printf("수요일\n"); break;
    case 4:
        printf("목요일\n"); break;
    case 5:
        printf("금요일\n"); break;
    default:
        printf("토요일\n"); 
    }
    return 0;
}

실행 결과]

금요일

 

typedef를 선언하여 열거형별칭으로 선언 할 수 있습니다.

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

#include <stdio.h>
typedef enum week {     // week 열거형 이름

sun, mon, tue, wed, thu, fri, sat 
}weekday;    // weekday 열거형별칭


int main(void)
{
    weekday day;    // 열거형별칭으로 선언된 변수
    day = fri; 

    switch (day) 
    { 
    case 0: 
        printf("일요일\n"); break; 
    case 1: 
        printf("월요일\n"); break; 
    case 2: 
        printf("화요일\n"); break; 
    case 3: 
        printf("수요일\n"); break; 
    case 4: 
        printf("목요일\n"); break; 
    case 5: 
        printf("금요일\n"); break; 
    default: 
        printf("토요일\n");  
    } 
    return 0; 
}

 

실행 결과]

금요일

 

typedef를 선언하여 익명의 열거형별칭으로 선언 할 수 있습니다.

    typedef enum { 
        값1,

        값2, 
        값3 
    } 열거형별칭;