Cho đoạn chương trình sau. Kết quả là int a, * p, * q; float * t; a = 5; p = & a; p = q; t = p; printf(“ % d % f”, a, t);
Trả lời:
Đáp án đúng: B
Đoạn chương trình có lỗi ở dòng `t = p;` vì `t` là con trỏ kiểu `float`, còn `p` là con trỏ kiểu `int`. Trong C, bạn không thể gán trực tiếp một con trỏ kiểu `int` cho một con trỏ kiểu `float` mà không có ép kiểu rõ ràng. Việc cố gắng in `t` bằng `%f` sau khi gán như vậy sẽ dẫn đến hành vi không xác định hoặc lỗi. Do đó, chương trình sẽ báo lỗi hoặc cho ra kết quả không mong muốn.
Vì vậy, đáp án chính xác là chương trình bị lỗi.