30/09/2018, 16:03
Poll: Kiểm tra kiến thức C - 2.8
Các bạn thảo luận đáp án nhé, bài test lấy từ http://www.indiabix.com/online-test/c-programming-test/12
8.What will be the output of the program?
#include<stdio.h>
#define SQR(x)(x*x)
int main()
{
int a, b=3;
a = SQR(b+2);
printf("%d
", a);
return 0;
}
- A. 25
- B. 11
- C. Error
- D. Garbage value
Bài liên quan
Có ai giải thích cho mình sao ra được đáp án như vậy không?
Cái này là một lỗi nhiều bạn mới sử dụng macro hay bị.
Vì
#define SQR(x) (x*x)
cho nênSQR(b+2)
sẽ được phân tích ra như saumà trong đó b=3 nên sẽ thành
Đáp án là 11.
Cách để tránh xảy ra lỗi này ta thêm dấu ngoặc nữa. Sửa
#define SQR(x) (x*x)
thànhKhi đó ta sẽ có
ra vậy, e tính ra 25 -_-
Cũng có bạn tính ra 25 mà, câu này là một câu cơ bản mà đi phỏng vấn người ta hay hỏi lắm.