C언어 - 열거형(enum)

 
- 열거형(enum)

⇒ 열거형은 이름을 갖는 정수형의 상수를 정의하여 프로그램을 이해하기 쉽게 해준다. 열거형은 예약어 enum을 사용하여 정의하며, 형식은 다음과 같다.

enum type_name

{

열거리스트

};


⇒ 열겨형의 정의와 사용의 예는 다음과 같다.

enum day_type = {sun, mon, tue, wed, thu, fri, sat};

enum day_type today, yesterday;

today = mon;

yesterday = today - 1;

printf("today is %d\n", today);

→ day_type은 자료형의 이름이고, 요일의 이름이 열거 리스트를 구성하고 있다. 내부적으로 열거리스트의 각 원소는 다음과 같이 0에서 시작하는 정수 값을 가지고 있다.

sum = 0, mon = 1, tue = 2, wed = 3, thu = 4, fri = 5, sat = 6


→ 프로그램 내에서 각 원소의 값을 임의로 지정할 수 있다.

enum day_type = {sun=2, mon=3, tue=25, wed=34, thu=47, fri=55, sat=99};



- 예제

#include<stdio.h>

struct test
{
int one;
};
enum test2
{
ZERO
= 100, // 초기화 안하면 0 나온다
ONE = 105, // ; 쓰면 안된다. 숫자 정수로 취급된다.
TWO, // 기준점부터 1씩 증가한다.
THREE
};

int main()
{
struct test A;
enum test2 B; // B는 unsigned int 형-C는 구별 못한다. C++은 구분

B = ONE;
A.one
= ONE;

printf(
"A.one = %d\n", A.one);
printf(
"ZERO = %d\n", ZERO);
printf(
"ONE = %d\n", ONE);
printf(
"TWO = %d\n", TWO);
printf(
"THREE = %d\n", THREE);

printf(
"B = %d\n", ONE);

B
= 105; // C++에서는 에러, C에서는 구별 못해서 받아들인다.

printf(
"B = %d\n", B);
return 0;
}

⇒ 출력 결과