#include \"stdafx.h\"#include <stdio.h>#define square(x) x*xint main(void){ int y=4; printf(\"%d %d \\n\",square(y),square(y+1)); return 0;}이걸 실행했는데왜 16 25가 아니라16 9가 나와 형들;;?아는 사람있어?
square(y+1) -> y+1*y+1 -> y+y+1
y가 4니까 9 맞는데?
매크로 작성시 주의사항을 제대로 안 읽었구나 너
매크로 함수는 치환이 기본이에요. square(y+1)는 y+1*y+1로 치환이 되죠. 그러면 연산자 우선순위 때문에 1*y가 먼저 계산되서, y+y+1이 되겠쬬?
으아니 ㅋㅋㅋ 치환되는걸 깜박햇어요 ㄳㄳㄳㄳㅋㅋ..
#define square(x) ((x)*(x))
이게 뭐야 ㅋㅋ
치환 뺏네요.ㅋㅋㅋㅋㅋㅋ square(y+1) -> y+1*y+1로 치환 하면 되요~