본문 바로가기

Language/C

열거형

●열거형

열거형은 이름을 원소로 갖는 특정 자료형이다. 이값은 이름(tag)로 참조한다. 컴파일러는 내부적으로 각 태그에 정수값을 하나씩 할당한다.

<형태>

enum enum-name{tag1,tag2,tag3.....} variable-name;

ex)typedef int week_dats;//week_day 데이터 정의

const int SUNDAY = 0;

const int MONDAY = 1;

const int TUEDAY = 2;

const int WEDNESDAY = 3;

const int THURSDAY = 4;

const int FRIDAY = 5;

const int SATYRDAY = 6;

week_day today = TUESDAY;

위의 예문은 실제사용의 예문이다. 하지만 이런 방법은 상당히 성가신데 이때 쓰는 명령어가

열거형(enum)이다.

ex)enum week_day{SUNDAY,MONDAY.TUEDAY,WEDNESDAY,

THURSDAY,FRIDAY,SATYDAY};

enum week_day today = TUEDAY;

열거형을 사용하면 자동으로 tag에 정수값이 할당된다. tag에 값을 넣지않으면 차례대로 0,1,2,3.....의 순으로 할당된다. 하지만 만약

enum week_day{SUNDAY,MONDAY=3.TUEDAY,WEDNESDAY,

THURSDAY,FRIDAY,SATYDAY};

enum week_day today = TUEDAY;

만일 위와 같이 수를 할당했다고 하면 MONDAY부터 3,4,5...순으로 자동적으로 값이 할당된다. C에서 enum형은 정수형과 호횐될 수 있게 구현되었으므로 다음 같은 코드도 유효하다.

today = 5;//5는week_day가 아님

물론 일부 컴파일러는 경고를 발생하기도 한다. 또한 C++에서 enum형은 정수형과 호횐되지 않는 별개의 데이터형이다.