C++ 복합 데이터 - 공용체

진경천·2023년 9월 11일
0

C++

목록 보기
13/90

공용체 union

#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

구조체의 크기는 구조체내의 가장 큰 크기를 가진 자료형 크기의 배수로 가질 수 밖에 없지만 공동체를 사용하여 그 크기를 줄인 모습이다.

profile
어중이떠중이

0개의 댓글