Cho đoạn chương trình:
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;
Kích thước của biến u là bao nhiêu byte?
Trả lời:
Đáp án đúng: B
Để tìm kích thước của union `u`, ta cần xem xét kích thước của các thành viên của nó và chọn kích thước lớn nhất.
- `struct ng` chứa ba biến `unsigned`: `ngay`, `thang`, và `nam`. Giả sử `unsigned` chiếm 4 byte, thì kích thước của `struct ng` là 4 + 4 + 4 = 12 byte.
- `struct diachi` chứa một biến `int` là `sonha` và một mảng `char` là `tenpho[20]`. Giả sử `int` chiếm 4 byte và `char` chiếm 1 byte, thì kích thước của `struct diachi` là 4 + 20 = 24 byte.
Union `u` sẽ có kích thước bằng kích thước lớn nhất của các thành viên của nó, tức là max(12, 24) = 24 byte.
Như vậy, không có đáp án nào đúng trong các lựa chọn đã cho.