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.