C

[내배캠자습]C언어 챕터 9-4 : enum

BreadMushroom 2026. 3. 29. 22:00

열거형(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;
}