JavaScript is required

Cho đoạn chương trình sau:

int a, *p, *q;

float *t;

a = 5; p = &a; p = q;

t = p;

printf("%d %f", a, t);

Kết quả:

A.

5 - 12.

B.

5.

C.

Chương trình lỗi

D.

Kết quả khác.

Trả lời:

Đáp án đúng: C


Đoạn chương trình có lỗi ở dòng `t = p;` vì `t` là con trỏ kiểu `float` trong khi `p` là con trỏ kiểu `int`. Trong C/C++, không thể gán trực tiếp con trỏ kiểu `int` cho con trỏ kiểu `float` mà không có ép kiểu tường minh, vì hai kiểu dữ liệu này có kích thước và cách biểu diễn khác nhau trong bộ nhớ. Việc cố gắng gán sẽ dẫn đến lỗi biên dịch hoặc hành vi không xác định (undefined behavior) trong quá trình chạy chương trình (nếu trình biên dịch cho phép). Vì vậy, chương trình sẽ báo lỗi và không thể in ra kết quả nào cả.

Câu hỏi liên quan