오늘 나는 마술을 만났습니다.아직 다른 i = i ++
언어 : C
코드 :
#include <stdio.h>
main()
{
int i = 5;
i = i++;
printf ("%i", i);
}
출력 :
6
어떻게? 왜?
이것은 까다로운 코드로되어 있지만 그 반대의 경우입니다. 부주의 한 프로그래머라면 i = i++
은 단순한 증분 일 뿐이라고 생각할 것입니다. 그러나 그것은 마치 여기처럼 작동합니다. 5
으로되어 있습니다! JavaScript에서와 같이.
어떻게해야합니까?
i
은 5
의 값을 얻습니다.i++
은 5
을 반환합니다.i
은 i++
(~ 6
)까지 게시물이 증가합니다.i
은 5
(i++
에 의해 반환 됨)의 값을 가져옵니다.i
(5
)의 값이 인쇄됩니다.아직까지는 6
입니다.
SO 또는 전체 인터넷 (단지 other way around)에 대한 설명을 찾을 수 없었습니다.
여기에 무슨 문제가 있습니까?
설명해주십시오.
이것은 정의되지 않은 동작입니다. 참조 - http://stackoverflow.com/questions/949433/could-anyone-explain-these-undefined-behaviors-i-i-i-i-etc –
"그것은 있어야합니다 ...". 아니요, 정의되지 않았습니다. – Marlon
나는 내 자신의 질문을 복제물로 표시하고있다. – SoonDead