2015년 4월 6일 오전 9시 51분에 저장한 글입니다.


2015년 4월 6일 오전 9시 51분에 저장한 글입니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> #define AA 2 #define sum3(i,j,k) i+j+k int main(void) { printf("%d\n",sum3(AA,4,6)); printf("%d\n",sum3(AA,4,6)/2); printf("%f\n",sum3(1.2,2.3,3.4)); printf("%d\n",AA); return 0; } Colored by Color Scripter cs 7 : 컴파일 전에 printf("%d\n",((2)+(4)+(6)));로 바뀜 8 : 컴파일 전에 printf("%d\n",((2)+(4)+(6))/2);로 바뀐다. 만약 3행에 ((i)+(j)+(k))이 (i)+(j)+(k)였다면 (2)+(4)+(6)/2로 계산이 되어 2+4+3 즉 9가 출력됨. 이러한 부작용을 방지하기 위해서 치환리스트의 매개변수는 일일이 괄호로 묶어 줌...



원문링크 : 2015년 4월 6일 오전 9시 51분에 저장한 글입니다.