열거형 enum은 관련이 있는 정수형 상수의 집합으로 typedef로 별칭을 정의하면 더욱 편리하게 사용 가능하다.
간단한 예제
#include <stdio.h>
typedef enum {
FALSE,
TRUE
}boolean;
typedef enum {
MALE =1,
FEMALE
}gender;
int main(void) {
boolean exit=FALSE;
char answer;
while (exit == FALSE) {
printf("성별을 입력하세요(1.남자, 2.여자):");
scanf_s("%hhd", &answer);
rewind(stdin);
if (answer == FEMALE) {
printf("여자입니다.\n");
}
else if (answer == MALE) {
printf("남자입니다.\n");
}else if (answer == FALSE) {
exit = TRUE;
}
}
return 0;
}
enum의 장점은 코드가 단순해지고 가독성이 좋아진다.
예제를 보면 단순히 answer == 0 또는 1 이라고 숫자를 사용하는 것보다 enum을 활용해 개발자의 의도를 직관적으로 파악이 가능하며 typedef를 사용해서 별칭으로 열겨형 변수를 선언해 사용할 수도 있다. (예제에서 boolean형 exit 선언)
열거형의 멤버는 따로 정의해주지 않는다면 첫번째 멤버가 0이고 순번에 따라 1씩 증가한다. 위의 gender 와 같이 MALE을 1로 지정해주면 FEMALE은 자동으로 2가 된다.
또한 기호 상수와 마찬가지로 대문자를 사용하는 것이 관례이다.
실제 프로젝트 내 enum 활용의 예제
'프로그래밍 > C' 카테고리의 다른 글
[ C언어 ] scanf 공백 ( 띄어쓰기 ) 포함 원하는 길이 만큼만 문자열 입력 받는 방법. (0) | 2022.04.27 |
---|---|
scanf , scanf_s " %d "로 정수 입력 받으려다 문자(열)이 잘못 들어왔을 때 무한루프에 빠지는 문제 / 문장 씹히는 문제 해결 (0) | 2022.04.27 |
[ C언어 ] 프로젝트(삽질일기) : 도서 관리 프로그램 - (4) - 파일 입출력 - fopen / fopen_s, .bin 바이너리 파일 읽기 / 쓰기 (0) | 2022.04.25 |
size_t 와 unsigned int 형의 차이 (0) | 2022.04.24 |
[ C언어 ] 프로젝트(삽질일기) : 도서 관리 프로그램 - (2) - 동적 메모리 할당 (0) | 2022.04.22 |