강좌 & 팁
글 수 2,412
2013.03.23 16:46:39 (*.52.177.249)
44488
C언어 - 열거형(enum)
- 열거형(enum)
⇒ 열거형은 이름을 갖는 정수형의 상수를 정의하여 프로그램을 이해하기 쉽게 해준다. 열거형은 예약어 enum을 사용하여 정의하며, 형식은 다음과 같다.
⇒
enum type_name { 열거리스트 }; |
⇒ 열겨형의 정의와 사용의 예는 다음과 같다.
enum day_type = {sun, mon, tue, wed, thu, fri, sat}; enum day_type today, yesterday; today = mon; yesterday = today - 1; printf("today is %d\n", today); |
→ day_type은 자료형의 이름이고, 요일의 이름이 열거 리스트를 구성하고 있다. 내부적으로 열거리스트의 각 원소는 다음과 같이 0에서 시작하는 정수 값을 가지고 있다.
sum = 0, mon = 1, tue = 2, wed = 3, thu = 4, fri = 5, sat = 6 |
→ 프로그램 내에서 각 원소의 값을 임의로 지정할 수 있다.
enum day_type = {sun=2, mon=3, tue=25, wed=34, thu=47, fri=55, sat=99}; |
- 예제
#include<stdio.h>
struct test
{
int one;
};
enum test2
{
ZERO = 100, // 초기화 안하면 0 나온다
ONE = 105, // ; 쓰면 안된다. 숫자 정수로 취급된다.
TWO, // 기준점부터 1씩 증가한다.
THREE
};
int main()
{
struct test A;
enum test2 B; // B는 unsigned int 형-C는 구별 못한다. C++은 구분
B = ONE;
A.one = ONE;
printf("A.one = %d\n", A.one);
printf("ZERO = %d\n", ZERO);
printf("ONE = %d\n", ONE);
printf("TWO = %d\n", TWO);
printf("THREE = %d\n", THREE);
printf("B = %d\n", ONE);
B = 105; // C++에서는 에러, C에서는 구별 못해서 받아들인다.
printf("B = %d\n", B);
return 0;
}
struct test
{
int one;
};
enum test2
{
ZERO = 100, // 초기화 안하면 0 나온다
ONE = 105, // ; 쓰면 안된다. 숫자 정수로 취급된다.
TWO, // 기준점부터 1씩 증가한다.
THREE
};
int main()
{
struct test A;
enum test2 B; // B는 unsigned int 형-C는 구별 못한다. C++은 구분
B = ONE;
A.one = ONE;
printf("A.one = %d\n", A.one);
printf("ZERO = %d\n", ZERO);
printf("ONE = %d\n", ONE);
printf("TWO = %d\n", TWO);
printf("THREE = %d\n", THREE);
printf("B = %d\n", ONE);
B = 105; // C++에서는 에러, C에서는 구별 못해서 받아들인다.
printf("B = %d\n", B);
return 0;
}
⇒ 출력 결과