C언어 열거형은 변수가 가질 변수값을 미리 나열해 놓은 구조입니다. enum
키워드로 정의와 선언을 합니다.
C언어 열거형
열거형은 어떤 변수가 가질 수 있는 변수값의 경우의 수를 미리 나열해놓은 구조를 말합니다.
예를 들어 Fruits { Apple, Banana, Tomato, Orange };
로 열거를 하면, 변수로 Fruits
를 사용할 경우 4가지 종류의 변수값만 대입할 수 있습니다.
C언어 열거형 정의와 선언
열거형의 정의 구조와 선언 구조는 구조체, 공용체와 비슷하므로 자세한 설명은 생략합니다. 차이점은 멤버에 세미 콜론;
이 없고 쉼표,
로 연결됩니다.
#include <stdio.h>
//열거형 정의
enum Foods
{
Apple, Banana, Tomato, Orange
};
//main()
int main()
{
enum Foods Fruits; //열거형명(Foods), 열거형 변수명(Fruits) 선언
return 0;
}
사실 열거형의 멤버들은 정수값입니다. 단지 숫자를 문자로 표현한 것입니다. 맨 앞 쪽부터 0
부터 1
씩 증가를 하고 사용자가 숫자를 변경할 수 있습니다.
#include <stdio.h>
//열거형 정의
enum Foods
{
Apple = 0, Banana = 1, Tomato = 2, Orange = 3
};
//main()
int main()
{
enum Foods Fruits; //열거형명(Foods), 열거형 변수명(Fruits) 선언
return 0;
}
열거형 초기화
열거형은 변수값에 미리 지정한 변수값만 넣을 수 있습니다.
#include <stdio.h>
//열거형 정의
enum Foods
{
Apple = 0, Banana = 1, Tomato = 2, Orange = 3
};
//main()
int main()
{
enum Foods Fruits; //열거형명(Foods), 열거형 변수명(Fruits) 선언
Fruits = Tomato; //열거형 변수명(Fruits)에 사전 정의된 변수값(Tomato) 대입
if ( Fruits == Apple )
{
printf("선택한 과일은 Apple 입니다.");
}
else if ( Fruits == Banana )
{
printf("선택한 과일은 Banana 입니다.");
}
else if (Fruits == Tomato)
{
printf("선택한 과일은 Tomato 입니다.");
}
else if (Fruits == Orange)
{
printf("선택한 과일은 Orange 입니다.");
}
else
{
printf("리스트 없는 과일입니다.");
}
return 0;
}
결과
선택한 과일은 Tomato 입니다.
변수 호출시 주소값이나 열거형 이름을 호출할 필요없이 멤버명을 변수로 그대로 사용하면 됩니다.