|
유니온에 대해 정확히 개념을 잡으시기 바랍니다.
너무나 당연히 5가 찍히는게 맞습니다.
왜냐하면 AddNo 나 NoSlot 나 둘이 같은 번지를 공유하고 있기 때문이다.
즉 그것이 유니온의 특징입니다.
원하는 결과를 얻으려면 union 을 struct 로 바꾸면 됩니다.
그럼.
김성준 님이 쓰신 글 :
: union UNODE
: {
: unsigned int Position;
: unsigned char AddrNo;
: unsigned char NoSlot;
: }UNode[5355];
:
: 이렇게 유니언을 배열로 선언을 하고
:
: void __fastcall TForm1::AddNode(char chNoChassis, char chNoSlot)
: {
: UNode[0].AddrNo = chNoChassis;
: UNode[0].NoSlot = chNoSlot;
: ShowMessage(IntToStr(UNode[0].AddrNo));
: }
:
: 이런 함수를 만들고
:
: AddNode(0, 5); 라고 하면
:
: 0이 출력이 되야 할거 같은데
: 자꾸 5가 출력이 되네요.. 뭐가 문제인지;;
: 터보씨책 보면서 짜려니 좀 힘듭니다 ^^;;
|