[완료] printf("%d %d %d\n", a++, a++, a++); 어떤 결과가 맞는걸까요??
글쓴이: plustag / 작성시간: 수, 2008/06/25 - 6:17오후
솔라리스(x86 gcc 3.4.6)
리눅스(x86 gcc 4.2.3)
윈도우(VS2008)
에서는 만약 a가 10이라면
12 11 10 이라는 결과가 나옵니다..
그런데
VS 6와 2005에서는
10 10 10 이 출력됩니다.
물론 양쪽 모두
그 다음 문장에선 a == 13이 됩니다.
컴파일러의 동작 방식에 따라 달라지는듯 한데
흔히 이런 경우를 거의 사용하는 일은 없지만
표준에 이런 경우에 대한 언급이 있는지 알고 싶습니다..
Forums:
함수인자에 대한
함수인자에 대한 평가순서에 대해선 어떤 보장도 없습니다.
Win32API의 경우는 함수호출규약으로 stdcall등을 이용하여 순서대로 평가되게 하지만, 표준은 아니구요.
함수인자에 대한
함수인자에 대한 평가 순서 및
하나의 statement에서 같은 변수에 대한 단일증감연산자(++,--) 평가 순서 역시
compiler define 입니다.
즉 표준에서 정해 놓지 않았습니다.
컴파일러 제작자들이 합의를 본것이 아닌 이상, 컴파일러 마다 값이 다르게 나오는것이 정상입니다.
-------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
답변 감사합니다..
표준을 정해놓은게 아니였군요..
누구냐 넌?
여기서 문제...
어떻게 생각하시나요? ㅎㅎ
int a = 0;
printf("%d\n", (a++) ? ++a : --a);
요건 표준에 나와 있는 건데요...^^
--------------------------
Go to the U-City
----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------
조건은 0 -> false로
조건은 0 -> false로 가기전 ++ 해서 1이었다가 --해서 0?
누구냐 넌?
C FAQ Q3.2를 참고하기
C FAQ 3장을 참고하기 바랍니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
어떤 결과가
어떤 결과가 맞는지는 중요하지 않습니다.
저렇게 코딩하시면 저한테 맞습니다. ㅋㅋㅋ
댓글 달기