JavaScript is required

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;

A.
20
B.
22
C.
28
D.
Đáp án khác
Trả lời:

Đáp án đúng: B


Đề bài yêu cầu xác định kích thước của biến `u`. Biến `u` là một union. Trong C/C++, `union` là một kiểu dữ liệu đặc biệt cho phép lưu trữ các kiểu dữ liệu khác nhau trong cùng một vùng nhớ. Kích thước của `union` bằng kích thước của thành viên lớn nhất của nó. Trong trường hợp này, `union u` có hai thành viên: 1. `struct ng date` 2. `struct diachi address` Tính kích thước của `struct ng`: - `unsigned ngay`: 4 bytes - `unsigned thang`: 4 bytes - `unsigned nam`: 4 bytes Tổng kích thước của `struct ng` là 4 + 4 + 4 = 12 bytes. Tính kích thước của `struct diachi`: - `int sonha`: 4 bytes - `char tenpho[20]`: 20 bytes Tổng kích thước của `struct diachi` là 4 + 20 = 24 bytes. Vì kích thước của `struct diachi` (24 bytes) lớn hơn kích thước của `struct ng` (12 bytes), kích thước của `union u` là 24 bytes. Tuy nhiên, đoạn code cung cấp khai báo `diachi_ngaysinh;` mà không khai báo biến `u`. Vì vậy kích thước của biến `u` chưa được xác định và không có đáp án nào đúng. Nếu đề bài hỏi kích thước của biến `diachi_ngaysinh` thì ta cần phải xem `diachi_ngaysinh` là biến kiểu gì. Nếu đề bài sửa lại là `union u diachi_ngaysinh;` thì kích thước của `diachi_ngaysinh` sẽ bằng kích thước của union `u` là 24 bytes. Nhưng ở đây `diachi_ngaysinh` lại không được khai báo kiểu, và không có đáp án đúng.

Tổng hợp 600+ câu hỏi trắc nghiệm lập trình C có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan