|
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
|