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의 값은 변화가 없게 됩니다.