55.10 심사문제 장치 옵션 구조체 만들기
, 최 정식님이 작성55.10의 심사문제 중 장치옵션 구조체 만들기에 질문이 있어 글을 작성합니다.
익명 공용체와 익명 구조체를 이용하여 문제를 해결하여야 함은 인지하고 있어 다음과 같이 코드를 작성하였습니다.
struct DeviceOption{
union{
struct{
unsigned char interrupt;
unsigned char boot;
};
unsigned char option[2];
};
};
공용체가 같은 공간을 차지하고 있으니, 배열로 공간을 선언하면 가능할 거라고 생각하였지만, 오답으로 판정되었습니다.
unsigned char option[2]; 부분을 unsigned short option으로 하면 정답으로 판정됨을 알지만, unsigned char option[2]도 분명 같은 크기의 공간인데 정답으로 인정되지 않는 부분에 대해 의문점이 듭니다.
Re: 55.10 심사문제 장치 옵션 구조체 만들기
, 도장_ 관리자님이 작성printf("0x%x\n", opt.option);
출력이 정해져 있습니다.
0x1122
이 값이 출력되어야 합니다.
문의한 것처럼 하면
0x507a9318이 출력됩니다(시스템에 따라 값은 달라짐)
공간 크기는 같은데, 배열로 선언했으면 opt.option[0], opt.option[1]로 접근해야 할 겁니다.
출력에서 정답으로 인정될 수 있는 것을 명확하게 제한해둔 것입니다.
공간 크기는 2로 동일하지만, 출력 결과가 달라지기 때문에 정답이 될 수 없습니다.