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가 다른값으로 바뀐다.