01/10/2018, 16:30
Thắc mắc khó giải thích macro trong C
Mình có đoạn code như sau và không hiểu vì sao khi in ra giá trị sqr(1+3) lại là 7 chứ không phải là 16
#include <stdio.h>
#define sqr(i) i*i
int main(void) {
// your code goes here
int i =10;
printf("%d %d",sqr(3),sqr(1+3));
return 0;
}
Cảm ơn mọi người !
Bài liên quan





Mọi người giúp mình với !
Đừng chụp màn hình, post hẳn Code lên bạn nhé.
vâng ! mình đang tạo lại topic mới
Topic có thể chỉnh sửa được nhé ! Không cần tạo topic mới !
Nhớ MarkDown code nhé
Còn nhiều cái phải học quá :((
macro trong C có sao viết vậy, bạn định nghĩa
sqr(i)lài*ithì nó sẽ viết y như vậy. Khi bạn gọisqr(1+3)thiiở đây sẽ là1+3,i*inó hiểu là1+3*1+3nên ra giá trị là 7sửa macro lại, thêm đóng mở ngoặc bao quanh
ithành#define sqr(i) (i)*(i)là được#definelà định nghĩa cái này bằng cái khác.Bạn viết code như vậy không khác gì gọi
Để có kết quả chính xác, bạn có thể viết hàm
hoặc define kiểu khác
Mình hiểu rồi …Cảm ơn bạn nhé
3 posts were merged into an existing topic: Topic chứa các reply được cho là off-topic - version 2
Câu hỏi về
i++ + ++i + +i + i-- + --iDo hỏi quá nhiều nên mình move sang off-topicGiải đáp rất kỹ ở đây: