c·c++/c 프로그래밍
알수 없는 수수께끼 i = i--; 의 동작
바로이순간
2012. 5. 24. 02:09
#include <stdio.h>
int main() {
int i = 5;
i = i--;
printf("i = %d\n",i);
return 0;
}
출력 결과를 보시면 아시겠지만 i는 변하지 않습니다.
i = i--;을 보면 i에 5 대입하고 나서 다음줄에는 1줄어 있을것 같은데
왜 변하지 않나요?
----------------------------------------------------------------------------------------------------------
결과가 믿기 어렵지만 구문대로 실행이 된 것입니다.
i=i--; 의 결과는 오른쪽의 값이 왼쪽에 대입되는 것이 최종적인 실행입니다.
i의 값이 그대로 대입되고 그 후에 i의 값이 감소하기 때문에
i의 값이 감소할 것으로 생각될수 있지만
최종 결과는 오른쪽의 모든 값구하기가 끝난 후에
그 결과가 왼쪽으로 대입이 되는 것입니다.
i의 값이 그대로 왼쪽에 들어갈 예정인채로 i의 값이 감소했지만
최종적으로는 조금전에 왼쪽에 들어갈 예정인 값이 그대로 왼쪽의 i에
들어가기 때문에 i의 값은 변화가 없게 됩니다.