GCC 3.2에서는 다른 결과가 나오는 군요.
4, 4
6, 16
8, 36
10, 64
방태윤 님이 쓰신 글 :
: BC++3.1 출력 이 더 합리적인거 아닌가요?
: 우선순서가 왼쪽이 먼저였는가 보군요^^
: printf("%d, %d\n", j, (j++) * (j++) );
: 이렇게 놓고 보면 bc 가 합리적으로 보이는데...
: 암튼 재밌는 결과군요...
: 근데 매크로문제가 아니라 우선순위 문제쯤 되지 않을까요?
: 매크로야 컴파일되기전에 완전히 해당 문자열로 교체되는걸로 알고있습니다.^^
:
: 김인구.구야 님이 쓰신 글 :
: : ANSI-C에 이것에 대해 정의가 되어있지 않다면
: : 어느 연산이 바람직하다고 생각하세요?
: : 물론 이런 코드는 안쓰는게 바람직하지만...
: :
: : #include <stdio.h>
: :
: : #define SW(X) ((X)*(X))
: :
: : void main(void)
: : {
: : int i, j=0;
: :
: : for(i=0; i<5; i++)
: : printf("%d, %d\n", j, SW(j++));
: : }
: :
: : BC++3.1 출력
: : 2, 0
: : 4, 6
: : 6, 20
: : 8, 42
: : 10, 72
: :
: : VC++ 출력
: : 0, 0
: : 2, 4
: : 4, 16
: : 6, 36
: : 8, 64 |