컴퓨터/C
C언어에서는 열거체라는 문법을 지원을 해줍니다. 이런 열거체를 사용한다면 프로그래머는 소스코드를 좀 더 쉽게 볼 수 있을 것입니다.
이 열거체는 특정한 숫자와 문자를 매칭 시켜주어 마치 문자를 사용했을 시 숫자와 동일한 효과를 낼 수 있습니다.
열거체 또한 구조체와 마찬가지로 사용하기전 열거체를 정의해주어야 합니다.
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문에는 각각의 문자와 숫자를 매칭시켜주지 않고 문자들만 나열한다면 처음 문자부터 0이 됩니다.
enum JOB
{
Warrior, // 0
Thief, // 1
Archer // 2
};
C 언어 - 동적메모리의 개념 (0) | 2021.07.02 |
---|---|
C 언어 - 쓰래기값과 초기화 (0) | 2021.06.30 |
C 언어 - 문자열 처리 함수(strlen, strcat, strcpy, strcmp) (0) | 2021.06.30 |
C 언어 - sizeof 함수 (0) | 2021.06.29 |
C 언어 - 함수의 원형 선언 (0) | 2021.06.29 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet