#include<stdio.h>
int main(void)
{
int a = 10;
printf(\"%d, %d\\n\", a--, --a);
printf(\"%d, %d\\n\", --a, a--);
printf(\"%d\",a);
return 0;
}
이러케 쳐봤더니...결과는
9,9
7.8
6
이 나오네연;
제생각에는
a가 첨에 10인데 printf는 뒤에서부터 실행한다고 해서
첫줄에 --a가 9가 되고 현재a는9이되고 a--는 9이 출력 되고 현재a는8일것임
다음 printf줄에서 a--가 8이 출력되고 현재a는7이되고 --a는6이 출력되고 현재a는6일것임
마지막 a는6
9,9
6.8
6
이러케 생각 되는데 아 머가 문제인건지 c열혈강의 책으로 인강 보며 독학중인데 첨 부터 헷갈리네연;;;;
http://www.zathras.de/angelweb/blog-c-parameter-evaluation-order.htm
https://www.securecoding.cert.org/confluence/display/seccode/EXP10-C.+Do+not+depend+on+the+order+of+evaluation+of+subexpressions+or+the+order+in+which+side+effects+take+place
플랫폼 마다 다르게 동작할수 있다. 정확하게 정의된 동작은 아니니까 저런코드 쓰면 죽여버린다
크크 무서운 유리한 흉 :) 그건 그렇고 그렇게 나도 글쓴이랑 똑같이 생각했다 :)
라인단위로 생각하셔야지요?
a-- 는 두번째 printf 라인이 끝나야 연산을 함...
그래도 이해 안되면 또 글 올려보삼 ㄲㄲ
플랫폼 마다 다르게 동작할수 있다. 정확하게 정의된 동작은 아니니까 저런코드 쓰면 죽여버린다 - 2