JavaScript is required

Cho đoạn chương trình sau, kết quả trả về sẽ là:
#include
int main() {
double num = 5.2;
int
var = 5;
printf("%d\t", sizeof(!num));
printf("%d\t", sizeof(var = 15 / 2));
printf("%d",
var);
return 0;
}

A.
1 4 5
B.
1 4 7
C.
8 4 7
D.
Kết quả khác
Trả lời:

Đáp án đúng: A


Đoạn chương trình C này liên quan đến toán tử `sizeof` và các kiểu dữ liệu. Chúng ta cần phân tích từng dòng `printf` để xác định kết quả. * `sizeof(!num)`: Toán tử `!` là toán tử NOT logic. Trong C, bất kỳ giá trị số khác 0 nào đều được coi là true. Vì vậy, `!num` sẽ trả về 0 (false). Toán tử `sizeof` trả về kích thước của kiểu dữ liệu của biểu thức. Trong trường hợp này, kiểu dữ liệu của `!num` là `int` (vì kết quả của toán tử logic là 0 hoặc 1, được biểu diễn bằng kiểu `int`). Kích thước của `int` thường là 4 byte trên nhiều hệ thống. Tuy nhiên, `!num` có kiểu dữ liệu là `int`, kích thước kiểu dữ liệu `bool` là 1 byte. * `sizeof(var = 15 / 2)`: Ở đây, `var = 15 / 2` là một phép gán. `15 / 2` là phép chia số nguyên, kết quả là `7`. Giá trị `7` được gán cho `var`. Tuy nhiên, toán tử `sizeof` không quan tâm đến giá trị được gán, mà chỉ quan tâm đến kiểu dữ liệu của biểu thức `var = 15 / 2`. Kiểu dữ liệu của `var` là `int`. Vì vậy, `sizeof(var = 15 / 2)` sẽ trả về kích thước của `int`, là 4 byte. * `var`: Giá trị của `var` sau phép gán `var = 15 / 2` là `7`. Vậy, kết quả in ra sẽ là `1 4 7`.

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