열거형(Enummeration)
정수에 별명을 붙여서 소스코드를 이해하기 쉽게 해줍니다.
enum 열거형명
{
멤버01,
멤버02,
...
};
Ex090401) enum 1 [중요 샘플 코드]
아래 소스코드를 따라서 작성해봅시다. 따라서 작성한 소스코드의 출력을 예측해봅시다. 예측한 결과와 실행한 결과를 비교해봅시다.
// Main.c
#include <stdio.h>
enum EMonth
{
MONTH_JAN = 1,
MONTH_FEB = 2,
MONTH_MAR = 3,
MONTH_APR = 4
};
enum EASCII
{
ASCII_A = 65,
ASCII_B,
ASCII_C,
ASCII_D
};
int main(void)
{
printf("This month's(%d) lucky character is %c.", 3, 66);
// 갑자기 숫자 3과 66이 튀어나오면 이해가 안될 수 있습니다.
int March = 3, B = 66;
printf("This month's(%d) lucky character is %c.", March, B);
// 물론 위와 같이 하면 가독성이 좋아지긴 하나, 변수가 메모리 공간을 잡아먹음.
printf("This month's(%d) lucky character is %c.", MONTH_MAR, ASCII_B);
return 0;
}
// Main.c
#include <stdio.h>
enum EFavoritePlayer
{
LeeChongwei = 1,
ViktorAxelsen = 2,
KentoMomota = 3,
KimWonho = 4
};
typedef enum EFavoritePlayer EFP;
enum EFavoriteDirector
{
KimChangseop =1,
LiuWei,
KimYongha
};
typedef enum EFavoriteDirector EFD;
int main(void)
{
EFP BMyrolemodel = LeeChongwei;
printf("Badminton my role model Ranking: %d\n", BMyrolemodel);
EFD GMyrolemodel = KimChangseop;
printf("GameDirector my role model Ranking: %d\n", GMyrolemodel);
return 0;
}
Ex090402) enum 2
아래 소스코드를 따라서 작성해봅시다. 따라서 작성한 소스코드의 출력을 예측해봅시다. 예측한 결과와 실행한 결과를 비교해봅시다.
// Main.c
#include <stdio.h>
enum EChamp
{
CHAMP_MISSFORTUNE,
CHAMP_MALFIGHT,
CHAMP_BLITZCRANK,
CHAMP_JAX,
CHAMP_SYNDRA
};
enum ERole
{
ROLE_TOP,
ROLE_MID,
ROLE_JUNGLE,
ROLE_BOTTOM,
ROLE_SUPPORTER
};
int main(void)
{
enum EChamp MyChamp = CHAMP_BLITZCRANK;
enum ERole MyRole = ROLE_SUPPORTER;
printf("MyChamp: %d\\n", MyChamp);
printf("MyRole: %d\\n", MyRole);
MyRole = CHAMP_MISSFORTUNE;
printf("MyRole: %d\\n", MyRole);
return 0;
}
열거형도 typedef가 가능합니다.
되도록이면 typedef를 이용해서 가독성을 더 끌어올려봅시다.
Ex090403) enum과 typedef
아래 소스코드를 따라서 작성해봅시다. 따라서 작성한 소스코드의 출력을 예측해봅시다. 예측한 결과와 실행한 결과를 비교해봅시다.
// Main.c
#include <stdio.h>
enum ERole
{
ROLE_TOP,
ROLE_JUNGLE,
ROLE_MID,
ROLE_BOT,
ROLE_SUP
};
typedef enum ERole ERole_t;
typedef enum EChamp
{
CHAMP_LEESIN,
CHAMP_MASTER_LEE,
CHAMP_BLITZ_CRANK
} EChamp_t;
typedef enum
{
TIER_BRONZE,
TIER_SILVER,
TIER_GOLD
} ETier_t;
int main(void)
{
ERole_t MyRole = ROLE_SUP;
EChamp_t MyChamp = CHAMP_BLITZ_CRANK;
ETier_t MyTier = TIER_SILVER;
return 0;
}
'C' 카테고리의 다른 글
| [내배캠자습]C언어 챕터 9-3 : 구조체와 클래스 (0) | 2026.03.29 |
|---|---|
| [내배캠자습]C언어 챕터 9-2 : typedef (0) | 2026.03.29 |
| [내배캠자습]C언어 챕터 9-1 : 구조체 (0) | 2026.03.29 |
| [내배캠자습]C언어 챕터 8-2 : 동적할당과 메모리 소유권 문제 (0) | 2026.03.29 |
| [내배캠자습]C언어 챕터 8-1 : 힙 메모리 (0) | 2026.03.29 |