공용체(Union)에서 공간을 나눠쓰는 경우가 있고 아닌경우가 있어서 구분하는 방법에 대해 질문드립니다.
이하얀
공용체(Union)에서 공간을 나눠쓰는 경우가 있고 아닌경우가 있어서 구분하는 방법에 대해 질문드립니다.
이 코드 같은 경우에는 현재 공유하는지 안하는지 확인시켜주기 위한 코드입니다.
저 위에 코드가 곧 아래와 같이 되어있는데요곧, 4byte인 mem1,2는 double공간에 나란히 있는게 아니라 병렬로 있어서 쓰고 싶은 경우 새로 덮어써서 사용하죠.
그런데 다음 예제는 그렇지 않았습니다.이거 같은 경우에는 현재, 아래 그림 처럼 되있습니다.
제가 의문이 드는 점은 맨 위에 코드에서는 나눠쓰지 않았던 mem이,
여기서 upper 와 lower는 4byte를 나눠서 병렬로 쓰고 있어 상위 2바이트 하위 2바이트가 나눠진다는 것을 보여주고 있다는 점입니다.
왜그런건가요?
아래는 code입니다
#include stdio.h
typedef struct dbshort
{
unsigned short upper;
unsigned short lower;
} DBShort;
typedef union rdbuf
{
int iBuf;
char bBuf[4];
DBShort sBuf;
} RDBuf;
int main(void)
{
RDBuf buf;
printf(정수 입력: );
scanf(%d, &(buf.iBuf));
printf(상위 2바이트: %u \n, buf.sBuf.upper);
printf(하위 2바이트: %u \n, buf.sBuf.lower);
printf(상위 1바이트 아스키 코드: %c \n, buf.bBuf[0]);
printf(하위 1바이트 아스키 코드: %c \n, buf.bBuf[3]);
return 0;
}
#include stdio.h
typedef union ubox // 공용체 ubox의 정의
{
int mem1;
int mem2;
double mem3;
} UBox;
int main(void)
{
UBox ubx; // 8바이트 메모리 할당
ubx.mem1=20;
printf(%d \n, ubx.mem2);
ubx.mem3=7.15;
printf(%d \n, ubx.mem1);
printf(%d \n, ubx.mem2);
printf(%g \n, ubx.mem3);
return 0;
}
-
올해1살
그거 좋습니다.
-
키클
공들여서 힘들게 질문하는 것을 느꼈는데, 질문 제목을 좀 짧게 해주셨으면 하는 작은 바램이 있습니다. 절대로 따지는 것이 아닙니다.
-
유우
아 해결했습니다
upper나 lower는
struct구조에 있기 때문에 나눠지는 것입니다.
감사합니다.
-하드웨어-
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2700368 | if에 관해서 질문이요... | Orange | 2025-07-04 |
2700339 | 이거 결과값이 왜이런건지.. (4) | 그댸와나 | 2025-07-04 |
2700313 | 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) | 크나 | 2025-07-03 |
2700287 | 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) | 아련나래 | 2025-07-03 |
2700264 | 문자와 숫자 동시에 입력??? | 글고운 | 2025-07-03 |
2700236 | txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) | 미국녀 | 2025-07-03 |
2700211 | 전위 연산자 (2) | 어른처럼 | 2025-07-02 |
2700183 | C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; | 피스케스 | 2025-07-02 |
2700150 | 꼭좀 도와주세요ㅠㅠㅠ | 호습다 | 2025-07-02 |
2700095 | 연산문제...질문... | 오빤테앵겨 | 2025-07-01 |
2700070 | while문 , 3의배수 출력하는 프로그램좀 짜주세욤. | 횃불 | 2025-07-01 |
2700041 | 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? | 헛장사 | 2025-07-01 |
2700012 | 배열// (1) | 전갈자리 | 2025-07-01 |
2699895 | 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) | 선아 | 2025-06-30 |
2699842 | 질문을 너무 많이 하네여.....죄송.... (2) | 해님꽃 | 2025-06-29 |
2699816 | 오류 질문입니다.. (1) | 해비치 | 2025-06-29 |
2699763 | 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) | 미라 | 2025-06-28 |
2699555 | c언어 다항식을 입력을 했는데 왜 출력이 안될까요? | 피스케스 | 2025-06-27 |
2699528 | C언어 포인터연산 질문입니다. (3) | 안녕나야 | 2025-06-26 |
2699476 | 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) | 클라우드 | 2025-06-26 |