-4
다음 코드의 출력을 이해할 수 없습니까 누군가 나를 도와 줄 수 있습니까?전 처리기 지시문
#define PRODUCT(x) (x*x)
main()
{
int i=3,j,k;
j=PRODUCT(i++);
k=PRODUCT(++i);
printf("\n %d%d",j,k);
}
위의 경우 I는 출력 가지고 :
9
49 내가 49이오고 방법을 이해 할 수없는 생각을하고 나는 밖으로
k=PRODUCT(++i);
댓글을 달았 때
결과가 25로 나타납니다. progra에서 어떤 일이 일어나는지 모릅니다. m
아. 완벽한 정의되지 않은 동작 ... –
매크로가 포함 된 코드를 이해하지 못하면 먼저 수동으로 매크로를 확장해야합니다. (물론 매크로를 사용하는 경우에는 사용하지 않아야합니다.) –
가능한 복제본 http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points –