#include<stdio.h>
#include<conio.h>
#define square(v) v*v
void main()
{
int p=3;
int s=square(++p);
printf("%d %d",s,p);
getch();
}
출력 왜 16이 출력으로 나오지 않습니까? (사전 감사)# 이상한
#include<stdio.h>
#include<conio.h>
#define square(v) v*v
void main()
{
int p=3;
int s=square(++p);
printf("%d %d",s,p);
getch();
}
출력 왜 16이 출력으로 나오지 않습니까? (사전 감사)# 이상한
++p * ++p
의 동작이 정의되지, 그것은
대신
inline int square(int p) {
return p * p;
}
를 참조하십시오 인라인 사용할 수 있습니다 컴파일러에 따라 달라집니다 해결 방법은 http://stackoverflow.com/questions/3605005/evaluate-macro-parameter-once-only를 참조하십시오. – Cascabel