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*i
thì nó sẽ viết y như vậy. Khi bạn gọisqr(1+3)
thii
ở đây sẽ là1+3
,i*i
nó hiểu là1+3*1+3
nên ra giá trị là 7sửa macro lại, thêm đóng mở ngoặc bao quanh
i
thành#define sqr(i) (i)*(i)
là được#define
là đị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-- + --i
Do hỏi quá nhiều nên mình move sang off-topicGiải đáp rất kỹ ở đây: