728x90
Enum
자바의 enum과 비슷하지만 오직 정수(int) 상수를 정의하기 위해서만 사용됩니다.
typedef를 적용할 수 있으며, 단지 정수에 이름을 붙여준 것이므로 일반 int와 동일하게 작동합니다.
typedef enum {Mon = 100, Tue = 200,
Wed = 300, Thu = 400, Fri = 500} Weekdays;//typedef 가능
enum Operator {ADD = 1, MINUS = 2, Divied = 3};
enum {RED = 1, BLACK = 2, TREE = 3};//이름 없이 가능
int main() {
enum Operator o = ADD;
o = 2;
o = 23;//가능!
//Operator o = ADD; 불가능!
Weekdays a = Mon;
int red = RED;
}
정수와 동일하게 취급하므로 아래의 결과 역시 모두 4입니다.
printf("%lu\n", sizeof(enum Operator));
printf("%lu\n", sizeof(RED));
Enum의 값 자동 할당
Emun에 정의한 상수들의 값을 개발자가 직접 할당하지 않는 경우, 자동으로 할당해줍니다.
할당해주는 방식은 다음과 같습니다.
1. 항상 자신의 왼쪽 상수에 1을 더한 값을 자신의 값으로 정합니다.
2. 최좌측 상수는 0으로 할당됩니다.
enum {RED, BLACK, TREE};
RED = 0, BLACK = 1, TREE = 2
enum {RED, BLACK=24, TREE};
RED = 0, BLACK = 24, TREE = 25
enum {RED=4, BLACK, TREE};
RED = 4, BLACK = 5, TREE = 6
728x90
'c언어' 카테고리의 다른 글
[C언어] 배열 첨자 (0) | 2022.06.16 |
---|---|
[C언어] - 함수포인터 (0) | 2022.06.15 |
[C언어] - union (0) | 2022.06.12 |
[C언어] - typedef (0) | 2022.06.12 |
[C언어] - 구조체 (Struct) (0) | 2022.06.12 |