hy30nq's blog

C 언어에서 열거체(Enumerations)에 대해 알아보기 본문

개인 공부

C 언어에서 열거체(Enumerations)에 대해 알아보기

hy30nq 2024. 6. 29. 13:50
728x90

안녕하세요! 😊 오늘은 C 언어에서 중요한 개념 중 하나인 열거체(Enumeration)에 대해 알아보려고 해요. 열거체는 코드를 더 깔끔하고 이해하기 쉽게 만들어주는 아주 유용한 도구랍니다. 이제 열거체가 무엇인지, 왜 사용하는지, 그리고 예시를 통해 어떻게 사용하는지 자세히 살펴볼게요.

1. 열거체란 무엇인가요?

열거체는 여러 개의 상수를 한 곳에 모아 정의하는 방식이에요. 예를 들어, 요일, 계절, 상태 등을 열거체로 정의할 수 있어요. 이렇게 하면 코드의 가독성이 좋아지고, 잘못된 값을 사용할 가능성을 줄일 수 있답니다.

2. 왜 열거체를 사용하나요?

열거체를 사용하면 여러 가지 장점이 있어요:

  • 가독성 향상: 열거체는 코드의 의미를 명확하게 만들어줘요.
  • 유지보수 용이: 상수 값이 변경되더라도 열거체만 수정하면 돼요.
  • 타입 안전성: 열거체를 사용하면 잘못된 값이 사용되는 것을 방지할 수 있어요.

3. 열거체 예시

그럼 이제 열거체의 사용 예시를 몇 가지 들어볼게요.

예시 1: 요일 열거체
#include <stdio.h>

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

int main() {
    enum Day today = MONDAY;
    printf("오늘의 요일 번호: %d\n", today);
    return 0;
}

위 예시는 요일을 나타내는 열거체예요. 이제 코드를 작성할 때 요일을 직접 입력하는 대신 MONDAY 같은 형태로 사용할 수 있답니다.

예시 2: 계절 열거체
#include <stdio.h>

enum Season {
    SPRING,
    SUMMER,
    FALL,
    WINTER
};

int main() {
    enum Season currentSeason = SPRING;
    printf("현재 계절 번호: %d\n", currentSeason);
    return 0;
}

이 예시는 계절을 나타내는 열거체에요. SPRING처럼 사용할 수 있어요.

예시 3: 주문 상태 열거체
#include <stdio.h>

enum OrderStatus {
    PENDING,
    PROCESSING,
    COMPLETED,
    CANCELLED
};

int main() {
    enum OrderStatus order = PROCESSING;
    printf("주문 상태 번호: %d\n", order);
    return 0;
}

이 예시는 주문 상태를 나타내는 열거체예요. 이렇게 하면 주문 상태를 문자열로 관리하는 것보다 훨씬 안전하고 명확하게 관리할 수 있죠.

4. 열거체의 값이 1씩 증가하는 방식

열거체를 선언할 때 기본적으로 첫 번째 항목의 값은 0이고, 그 다음 항목들은 이전 항목의 값에 1씩 추가된 값으로 설정돼요. 이를 통해 일일이 값을 지정하지 않아도 자동으로 1씩 증가한 값을 가지게 됩니다.

예를 들어, 다음과 같은 열거체를 살펴볼까요?

#include <stdio.h>

enum Day {
    SUNDAY,     // 0
    MONDAY,     // 1
    TUESDAY,    // 2
    WEDNESDAY,  // 3
    THURSDAY,   // 4
    FRIDAY,     // 5
    SATURDAY    // 6
};

int main() {
    enum Day today = MONDAY;
    printf("오늘의 요일 번호: %d\n", today); // 출력: 오늘의 요일 번호: 1
    return 0;
}

위 예시에서 SUNDAY는 0부터 시작하고, 그 다음 항목들은 1씩 증가하는 값을 가지게 됩니다.

특정 값에서 시작하기

열거체의 특정 항목에 값을 직접 지정할 수도 있어요. 이렇게 하면 그 다음 항목들은 지정한 값부터 1씩 증가한 값을 가지게 됩니다.

예를 들어, 다음과 같이 특정 항목부터 값을 지정할 수 있어요:

#include <stdio.h>

enum Month {
    JANUARY = 1,    // 1
    FEBRUARY,       // 2
    MARCH,          // 3
    APRIL,          // 4
    MAY,            // 5
    JUNE,           // 6
    JULY,           // 7
    AUGUST,         // 8
    SEPTEMBER,      // 9
    OCTOBER,        // 10
    NOVEMBER,       // 11
    DECEMBER        // 12
};

int main() {
    enum Month thisMonth = AUGUST;
    printf("이번 달의 번호: %d\n", thisMonth); // 출력: 이번 달의 번호: 8
    return 0;
}

여기서 JANUARY는 1로 설정했고, 그 다음 항목들은 1씩 증가하는 값을 가지게 돼요.

중간에 값을 지정하기

열거체의 중간에 값을 지정하면, 그 이후의 항목들은 지정한 값부터 1씩 증가하는 값을 가지게 됩니다.

다음 예시를 볼게요:

#include <stdio.h>

enum HttpStatus {
    OK = 200,            // 200
    CREATED,             // 201
    ACCEPTED = 202,      // 202
    NO_CONTENT = 204,    // 204
    BAD_REQUEST = 400,   // 400
    UNAUTHORIZED,        // 401
    FORBIDDEN,           // 403
    NOT_FOUND            // 404
};

int main() {
    enum HttpStatus status = FORBIDDEN;
    printf("HTTP 상태 코드: %d\n", status); // 출력: HTTP 상태 코드: 403
    return 0;
}

위 예시에서는 OK부터 CREATED까지는 200, 201로 1씩 증가하고, ACCEPTED부터는 다시 202로 설정했어요. 그리고 NO_CONTENT는 204, BAD_REQUEST는 400으로 지정한 후 그 다음 항목들은 1씩 증가하게 됩니다.

5. 결론

열거체는 프로그래밍에서 코드의 가독성을 높이고, 유지보수를 쉽게 하며, 타입 안전성을 보장하는 데 큰 도움이 돼요. 여러 가지 예시를 통해 열거체의 값 설정 방법을 이해할 수 있었길 바라요! 😊 실제 코드를 작성할 때 열거체를 적극 활용해보세요!

728x90