C언어 Enum {1,2,3};
1. enum
상수화 선언.
구조체인데, 알파벳 요소를 멤버변수로 받으면 숫자로 저장하는 구조체라고 생각하면 편함
2. 특징
1) 별도 초기화 없을 시 시작부터 0,1,2,3을 대입
2) 초기화 있을 시 해당 숫자부터 규칙적으로 대입
3) 불규칙적 숫자 대입 원하면 모든 변수에 직접 초기화해주면 됨
[코드 1]
#include <stdio.h>
enum alphabet_set {
a,
b,
c,
d,
e
}alph;
void main() {
enum alph num_1, num_2, num_3;
num_1 = a;
num_2 = b;
num_3 = c;
printf("a는 %d, b는 %d, c는 %d", num_1, num_2, num_3);
return 0;
}
[출력 결과]
a는 0, b는 1, c는 2
[코드 2]
#include <stdio.h>
enum alphabet_set {
a,
b,
c,
d,
e
}alph;
void main() {
enum alph num_1, num_2, num_3;
num_1 = a;
num_2 = a;
num_3 = a;
printf("a는 %d, b는 %d, c는 %d", num_1, num_2, num_3);
return 0;
}
처럼 모두 a를 대입해도 괜찮음. 우리가 설정한 변수니까!!
[코드 3]
#include <stdio.h>
enum alphabet_set {
a,
b,
c,
d,
e
}alph;
typedef enum {
a2=5,
b2,
c2,
d2,
e2=5
}alphbet_set2;
void main() {
enum alph num_1, num_2;
alphbet_set2 num_3;
num_1 = a;
num_2 = b;
num_3 = e2;
printf("a는 %d, b는 %d, c는 %d", num_1, num_2, num_3);
return 0;
}
[결과]
a는 0, b는 1, c는 5
[설명]
1. typedef
우리는 enum을 alphabet_set 라는 enum명으로 선언하고, 이 enum형 구조체 alphabet_Set의 변수명을 alph 라고 지어주었기때문에 main 에서는 enum 형 변수인 alph 를 통해 a,b,c,d,e를 불러올 수 있는 상황이 됨
이때 main에서 enum alph 처럼 자료형과 자료형으로 선언한 모임의 이름을 모두 적어주기 귀찮을 때 typedef 사용
typedef enum{} 이름; 을 하게 되면 앞으로 enum형으로 선언한 이 모임은 enum 포함해서 이 이름으로 부르겠다는 뜻임. 그래서 그 안의 변수 활용할 공간 num_3 선언시에도 이름만 적어주면 됨
2. 초기화
원래 enum 안의 변수명이 뭐든간에 첫 요소부터 1,2,3,4,5인데
만일 alphbet_set2 안에서처럼 처음 a2=5로 지정해주면 5,6,7,8,9로 여전히 일정한 차이를 두고 숫자가 대입됨
따라서 e2=5처럼 하나씩 지정해주면 지정값을 특정 멤버변수 안에 넣어줄수있음!