What will the following program output?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>
#define ANSWER 42

int main() {
    printf("%d", ANSWER);
    return 0;
}

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "42". Chỉ thị define thuộc bộ tiền xử lý: trước khi trình dịch thấy mã, bộ tiền xử lý thay mọi lần xuất hiện của tên hằng trong luồng mã nguồn bằng dãy ký tự 42. Vì vậy lệnh in thực chất nhận một hằng nguyên 42 và màn hình hiện 42. Hằng kiểu này không phải biến, không chiếm ô nhớ, không có kiểu riêng; nó chỉ là phép thay thế văn bản. Lựa chọn "ANSWER" sẽ đúng nếu tên hằng nằm bên trong một hằng chuỗi, vì bộ tiền xử lý không thay thế bên trong chuỗi; ở đây tên nằm ngoài chuỗi, tại vị trí đối số, nên nó bị thay. Lựa chọn "Compilation Error" sai vì sau khi thay thế, đặc tả số nguyên khớp đúng với một hằng nguyên. Lựa chọn "No Output" sai vì printf vẫn được gọi và luôn xuất ra dòng chuẩn.

Cùng phần 2

Xuất hiện trong 1 bộ đề