c기초

044. 공용체 이해하기

iloveapeach 2020. 3. 23. 11:46

<결과>

V.i = 1085276160
V.d = 5.500000

 

얘는 하나밖에 못쓴다. 이게 무슨말인가 하면 i를 사용하면 i밖에 못쓰고 다른건 이상하게 나온다.

d를 사용하기로 하고 i를 쓴다면 i값이 이상하게 나온다.

한 번 해보자.

 

3줄 ~ 6줄 - union tagvariant

공용체는 union을 쓴다. 그 안에 int i;    float d; 라고 썼다.

 

10줄 - union tagvariant V;

구조체와 마찬가지로 변수명을 써야 쓸 수 있다.

 

12줄 ~ 13줄 -  V.i = 0;    V.d = 5.5;

공용체 변수 i에 0을 대입하고 d에는 5.5를 대입했다.

 

15줄 ~ 16줄

V.i의 결과가 이상하다. 분명히 0을 대입했는데 이상한 값이 튀어나왔다.

그런데 V.d는 정상적으로 출력을 했다.

이게 왜 그러냐면 얘네들은 메모리를 공유해서 쓰기 때문에 그렇다.

 

V.i 에 다른값을 넣으면 V.d도 다른값으로 바뀐다.

거기에다가 또 V.d에 값을 넣으면 V.i가 다른값으로 바뀐다.