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, C++' 카테고리의 다른 글
[ C ] 파일 입출력 이해하기2_파일의 개방모드(Mode) (398) | 2020.07.25 |
---|---|
[ C ] 파일 입출력 이해하기1_스트림 생성, 소멸, 파일 읽는 함수_fopen, fclose, fagets (421) | 2020.07.25 |
[ C ]커스텀 자료형 이해하기5_공용체(Union Type)이란? 정의/사용하는 이유 (404) | 2020.07.24 |
[ C ]커스텀 자료형 이해하기4_함수 반환값으서의 구조체 (412) | 2020.07.24 |
[ C ]커스텀 자료형 이해하기3_구조체 배열, 포인터 (374) | 2020.07.24 |
댓글