열거체
#include <iostream>
enum Number
{
One = 1,
Two,
Three,
Four,
Five,
Six,
Seven,
Eight,
Nine,
Zero = 0
};
int main(void)
{
int a = One;
int b = Eight;
int c = Zero;
printf("a : %d / b : %d / c : %d", a, b, c); // 결과 1, 8, 0
return 0;
}
'열거체'는 상수 값을 가지는 식별자입니다. 값이 정의되지 않으면 0부터 시작해서 1씩 증가하며 값이 정해지고, 값이 정의가 되었다면 정의된 값 이후부터 1씩 증가하게 됩니다.
예시에서 처음에 1로 정의하였기 때문에 1부터 9까지 증가하면서 값이 정의되었고, Zero에서 0을 정의하여 Zero는 0이 되었습니다. 여기서 Zero 다음에 식별자가 추가된다면 그 식별자는 1이 되겠죠. 위에서 One이 1이 된 것과는 상관없이 값은 중복될 수 있습니다.
열거체는 주로 Type을 나눌 때 사용합니다. 예를 들어 10대는 0, 20대는 1, 30대는 2, ... 이와 같이 컴퓨터는 숫자로 구분하는데 사람이 볼 때 숫자가 아니라 문자로 구분되어 알아보기 쉽게 하기 위함입니다.
공용체
#include <iostream>
union My_union
{
char a;
short b;
int c;
};
int main(void)
{
My_union u;
u.c = 0x7fffffff;
printf("a : %d / b : %d / c : %d", u.a, u.b, u.c); // 결과 -1, -1, 2147483647
return 0;
}
'공용체'는 여러 변수들이 메모리 공간을 공유하는 형식입니다. 메모리 크기가 가장 큰 변수를 기준으로 메모리 공간이 할당되고, 메모리 공간에 들어있는 값을 모든 변수들이 사용할 수 있습니다.
예시 코드에서 c에만 int의 최대값을 넣었지만, 다른 변수들에도 -1 값, 즉 1111 1111, 1111 1111 1111 1111 bit를 읽어온 것을 알 수 있습니다.
'C & C++' 카테고리의 다른 글
C/C++ 기초 - 구조체 ( Struct ), 비트 필드 ( Bit field ) (0) | 2021.10.31 |
---|---|
C/C++ 기초 - 변수 ( Variable ) (0) | 2021.10.17 |
C/C++ 기초 - 함수 ( Function ) (0) | 2021.10.17 |
C/C++ 기초 - 포인터 ( Pointer ) (0) | 2021.10.14 |
C/C++ 기초 - 배열 ( Array ) (0) | 2021.10.12 |