57.3 열거형을 for에 활용하기

열거형을 정의한 뒤 for 반복문에 활용하는 방법도 있습니다. 예를 들어 프로그램에서 일요일부터 토요일까지 매일 반복되는 알람을 설정한다면 열거형과 반복문을 사용하면 편리합니다.

enum_for.c

#include <stdio.h>

typedef enum _DayOfWeek {    // 열거형 이름은 _DayOfWeek
    Sunday = 0,                  // 초깃값을 0으로 할당
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    DayOfWeekCount               // 열거형 값의 개수를 나타내는 항목 추가
} DayOfWeek;                 // typedef를 사용하여 열거형 별칭을 DayOfWeek로 정의

int main()
{
    // 초깃값은 Sunday, i가 DayOfWeekCount보다 작을 때까지만 반복
    for (DayOfWeek i = Sunday; i < DayOfWeekCount; i++) 
    {
        printf("%d\n", i);
    }

    return 0;
}

실행 결과

0
1
2
3
4
5
6

먼저 다음과 같이 열거형을 정의할 때 초깃값으로 0을 할당합니다. 그리고 열거형 값을 나열하다가 맨 마지막에는 DayOfWeekCount와 같이 열거형 값의 개수를 나타내는 항목을 넣어줍니다(보통 이름을 지을 때 개수 또는 최대치를 뜻하는 Count, _COUNT, Max, _MAX, Maximum 등을 조합합니다).

typedef enum _DayOfWeek {    // 열거형 이름은 _DayOfWeek
    Sunday = 0,                  // 초깃값을 0으로 할당
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    DayOfWeekCount               // 열거형 값의 총 개수를 뜻하는 값 추가
} DayOfWeek;                 // typedef를 사용하여 열거형 별칭을 DayOfWeek로 정의

for 반복문에서 열거형 별칭으로 변수 i를 선언한 뒤 초깃값으로 Sunday를 넣습니다. 그리고 iDayOfWeekCount 보다 작을 때까지만 반복합니다.

// 초깃값은 Sunday, i가 DayOfWeekCount보다 작을 때까지만 반복
for (DayOfWeek i = Sunday; i < DayOfWeekCount; i++) 
{
    printf("%d\n", i);
}

이렇게 하면 열거형 값 Sunday부터 Saturday까지 반복할 수 있습니다.

지금까지 열거형에 대해 배웠습니다. 열거형은 소스 코드를 알아보기 쉽게 만들어주므로 자주 사용하는 것이 좋습니다. 문법을 눈에 익혀두세요.