#include <iostream>
using namespace std;
int main() {
struct Product0 {
int idType;
int idInteger;
char idChars[10];
};
union ID {
int integer;
char chars[10];
};
struct Product1 {
int idType;
ID id;
};
Product0 product0 = { 0, 12 };
if (product0.idType == 0)
cout << product0.idInteger << endl;
else
cout << product0.idChars << endl;
Product1 product1 = { 1, {.chars = "abc"} };
// .chars = 와 같은 표현은 std C++ 20 버전 이상에서만 사용 가능
if (product1.idType == 0)
cout << product1.id.integer << endl;
else
cout << product1.id.chars << endl;
cout << "Product0의 크기 : " << sizeof(Product0) << endl;
cout << "Product1의 크기 : " << sizeof(Product1) << endl;
cout << "ID의 크기 : " << sizeof(ID) << endl;
}
12
abc
Product0의 크기 : 20
Product1의 크기 : 16
ID의 크기 : 12
구조체의 크기는 구조체내의 가장 큰 크기를 가진 자료형 크기의 배수로 가질 수 밖에 없지만 공동체를 사용하여 그 크기를 줄인 모습이다.