[08] 열거형 (enum)]

열거형 사용하기

참고 문헌 (Ch 57): https://dojang.io/mod/page/view.php?id=480

열거형 정의하기

열거형을 사용하면 상수를 좀 더 편하게 정의 가능!

enum 을 이용하여 정의

1
2
3
4
5
enum 열거형이름 {
1 = 초깃값,
2,
3
};

열거형 변수의 선언: enum (열거형 이름) (변수 이름);

예시 (요일)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>

enum DayOfWeek { // 열거형 정의
Sunday = 0, // 초깃값 할당
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};

int main()
{
enum DayOfWeek week; // 열거형 변수 선언

week = Tuesday; // 열거형 값 할당

printf("%d\n", week); // 2: Tuesday의 값 출력

return 0;
}

물론 모든 값을 하나하나 정의할 수도 있음

1
2
3
4
5
6
enum Value {
ValueA = 1,
ValueB = 3,
ValueC = 7,
ValueD = 11
};

역시 typedef 를 적용해서 익명 열거형으로도 이용할 수 있음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
typedef enum 열거형이름 {
1 = 초깃값,
2,
3
} 열거형별칭;

typedef enum {
1 = 초깃값,
2,
3
} 열거형별칭;

// e.g.
typedef enum { // 익명 열거형 정의
Sunday = 0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
} DayOfWeek; // typedef를 사용하여 열거형 별칭을 DayOfWeek로 정의

DayOfWeek week; // 열거형 별칭으로 공용체 변수 선언

구조체와 마찬가지로 열거형을 정의하는 동시에 변수 선언도 가능

1
2
3
enum 열거형이름 {
자료형 멤버이름;
} 변수;

열거형을 switch에 활용하기

활용하는 방법

1
2
3
4
5
6
switch (열거형변수)
{
case 열거형값:
실행할코드;
break;
}

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>

enum LuxSkill {
LightBinding = 1,
PrismaticBarrier,
LucentSingularity,
FinalSpark
};

int main()
{
enum LuxSkill skill; // 열거형 변수 선언

skill = LightBinding; // 열거형 값 할당

switch (skill)
{
case LightBinding: // 열거형 값이 LightBinding일 때
printf("LightBinding\n");
break;
case PrismaticBarrier: // 열거형 값이 PrismaticBarrier일 때
printf("PrismaticBarrier\n");
break;
case LucentSingularity: // 열거형 값이 LucentSingularity일 때
printf("LucentSingularity\n");
break;
case FinalSpark: // 열거형 값이 FinalSpark일 때
printf("FinalSpark\n");
break;
default:
break;
}

return 0;
}
// 결과 : LightBinding