C 언어 - 열거체(enum)

컴퓨터/C

728x90
반응형

의미를 부여해주는 열거체 

C언어에서는 열거체라는 문법을 지원을 해줍니다. 이런 열거체를 사용한다면 프로그래머는 소스코드를 좀 더 쉽게 볼 수 있을 것입니다. 

이 열거체는 특정한 숫자와 문자를 매칭 시켜주어 마치 문자를 사용했을 시 숫자와 동일한 효과를 낼 수 있습니다.

 

열거체 또한 구조체와 마찬가지로 사용하기전 열거체를 정의해주어야 합니다.

 

열거체의 정의 enum

enum 열거체명
{
	멤버명 = 숫자,
    멤버명 = 숫자
};

 

enum 사용해보기

만약 프로그래머가 게임의 직업이 3종류가 있다고 가정해본다면 다음과 같을 것입니다.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

typedef struct _Job
{
    char name[10];
    int att;
    int HP;
}JOB;

int main()
{
    JOB job[3];
    strcpy(job[0].name, "전사");
    job[0].att = 10;
    job[0].HP = 200;

    strcpy(job[1].name, "도적");
    job[1].att = 20;
    job[1].HP = 100;

    strcpy(job[2].name, "궁수");
    job[2].att = 15;
    job[2].HP = 150;
    
    for (int i = 0; i < 3; i++)
    {
        printf("직업 : %s\n", job[i].name);
        printf("공격력 : %d\n", job[i].att);
        printf("체력 : %d\n", job[i].HP);
        printf("\n");
    }
    
    return 0;
}

이런 소스코드에서는 job이라는 배열의 인덱스 0,1,2를 통하여 접근하게 됩니다. 소스코드가 길어지면 이런 숫자로 인덱스를 접근하는 부분에서는 가독성이 떨어지게 될 것입니다. 이럴 때 enum문을 사용하면 좀 더 프로그래머가 알기 쉽게 소스코드를 작성할 수 있습니다.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
enum JOB
{
    Warrior = 0,
    Thief = 1,
    Archer = 2
};
typedef struct _Job
{
    char name[10];
    int att;
    int HP;
}JOB;

int main()
{
    JOB job[3];
    strcpy(job[Warrior].name, "전사");
    job[Warrior].att = 10;
    job[Warrior].HP = 200;

    strcpy(job[Thief].name, "도적");
    job[Thief].att = 20;
    job[Thief].HP = 100;

    strcpy(job[Archer].name, "궁수");
    job[Archer].att = 15;
    job[Archer].HP = 150;

    for (int i = 0; i < 3; i++)
    {
        printf("직업 : %s\n", job[i].name);
        printf("공격력 : %d\n", job[i].att);
        printf("체력 : %d\n", job[i].HP);
        printf("\n");
    }

    return 0;
}

이런 식으로 각각의 인덱스에 접근할 때 enum문을 사용하면 조금 더 직관적인 소스코드를 만들어 사용할 수 있습니다.

 

추가 enum문 문법

enum문에는 각각의 문자와 숫자를 매칭시켜주지 않고 문자들만 나열한다면 처음 문자부터 0이 됩니다.

enum JOB
{
    Warrior, // 0
    Thief,   // 1
    Archer  // 2
};

 

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :