Cho đoạn chương trình. Kích thước của biến u là bao nhiêu byte: struct ng { unsigned ngay; unsigned thang; unsigned nam; }; struct diachi { int sonha; char tenpho[20] }; union u { struct ng date; struct diachi address; } diachi_ngaysinh;
Đáp án đúng: B
Trong đoạn chương trình C, union u chứa hai thành viên: struct ng date và struct diachi address. Kích thước của union sẽ bằng kích thước của thành viên lớn nhất trong nó.
- struct ng date chứa ba trường unsigned ngay, unsigned thang, và unsigned nam. Giả sử unsigned chiếm 4 bytes, vậy kích thước của struct ng là 4 * 3 = 12 bytes.
- struct diachi address chứa một trường int sonha và một mảng char tenpho[20]. Giả sử int chiếm 4 bytes và char chiếm 1 byte, vậy kích thước của struct diachi là 4 + 20 * 1 = 24 bytes.
Do đó, kích thước của union u sẽ bằng kích thước của struct diachi, tức là 24 bytes. Vì không có đáp án nào đúng nên ta chọn đáp án D.





