본문 바로가기
컴퓨터 공학/C, C++

[ C ]커스텀 자료형 이해하기6_열거형(Enumerated Type)란? 개념/선언방법

by hahehohoo 2020. 7. 24.
반응형

 

 

C언어 열거형(Enumerated Type)란?

 

 

■ 열거형 개념, 선언방법

열겨형은 변수에 저장가능한 값을 열거하여 정의합니다. 그래서 열거형 변수명을 IndianBoy로 하고 다음과 같이 값을 넣을 수 있습니다. 

 

 

enum indianBoy 
{
   One=1, Two=2, Three=3, Four=4, Five=5
};

 

IndianBoy형 변수가 저장할 수 있는 값으로는 One, Two, Three.. 라는 상수가 있으며, 각각 1, 2, 3...으로 정의하였습니다. 이 열거형 변수를 선언하려면 구조체에 struct 키워드 붙이듯이 enum 키워드를 사용하면 됩니다. 

 

 

enum indianBoy song1; // indianBoy형 변수 song1선언

 

 

이제 위의 열거형을 typedef 선언을 추가해서 정의한 코드를 보겠습니다. 

 

#include <stdio.h>

typedef enum indianBoy 
{
   One=1, Two=2, Three=3, Four=4, Five=5
} IndianBoy;

void Sing(IndianBoy iB)
{
   switch(iB)
   {
   case One:
       puts("1st boy is Tom");
       return;
   case Two:
       puts("2nd boy is Tom too");
       return;
   case Three:
       puts("3rd boy is Tom too");
       return;
   case Four:
       puts("4th boy is Tom too");
       return;
   case Five:
       puts("5th boy is Tom too");
       return;
   }
   puts("-End-");
}

int main(void)
{
   IndianBoy song1;
   for(song1 = One; song1 <= Five; song1 += 1 )
      Sing(song1);
   return 0;
}
       
       

 

One, Five는 1, 5를 의미하는 상수라서 반복문에 사용할 수 있습니다. 

 

 

 

■ 열거형 상수의 값이 결정되는 방식

 

열거형을 정의하는데 상수의 값을 명시하지 않으면 어떻게 될까요?

enum Days { MON, TUE, WED };

 

이런 경우는 0부터 1씩 증가한 값이 각각 저장됩니다. 그래서 다음 정의와 완전히 같습니다. 

enum Days { MON=0, TUE=1, WED=2 };

 

 

만약 다음과 같이 되어있다면

enum Days { MON=5, TUE, WED=8 };

 

앞의 상수보다 1이 증가된 값이 할당됩니다. 

enum Days { MON=5, TUE=6, WED=8 };

 

 

■ 열거형을 사용하는 이유

 

둘 이상의 연관 있는 이름을 상수로 선언함으로서 코드의 가독성을 높일 수 있습니다. 위의 코드(Days형)에서 MON, TUE대신 1, 2를 썼다면 그 예제가 요일과 관련되어 있다는 점을 파악하기 쉽지 않을 것입니다. 

 

 

 

 

 

 

-----------------------------------

C언어 문법 총정리

목록 보러가기 

-----------------------------------

 

 

 

 

반응형


댓글