#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의 값은 변화가 없게 됩니다.
'c·c++ > c 프로그래밍' 카테고리의 다른 글
c언어 입력받은 초를 일/시간/분/초로 환산하기 (0) | 2012.05.25 |
---|---|
포인터 질문입니다. (0) | 2012.05.25 |
카드게임 플러쉬 체크 (0) | 2012.05.24 |
C언어에서 명령을 시간 내에만 실행하게 하는 방법이 있나요? (0) | 2012.05.20 |
combination 조합 (0) | 2012.05.19 |