gunho3489   2년 전

리눅스 환경에서 엔디언을 공부하고 있습니다.

아래 코드는 n의 값이 메모리에 리틀엔디언으로 들어갔을 때의 모습을 출력해주는 코드인데

for문에 대한 이해를 잘 못하겠습니다.

도와주세요..! 

0x(16진수)로 출력하는데 *((unsigned char*)(&n) + i))의 부분을 모르겠습니다

yukariko   2년 전

&n 는  n의 주소를 반환 합니다. 타입은 unsigned long long *  입니다.

&n 을 unsigned char *로 캐스팅합니다.

&n + i 는 n의 주소에 i를 더합니다. &n의 타입은 현재 unsigned char * 이므로 sizeof(unsigned char) * i 만큼 더해진 주소가 반환됩니다.

* 는 포인터 연산입니다. 현재 주소 (&n + i) 를 현재 타입(unsigned char *)으로 접근합니다.

이를 8번 반복합니다.

unsigned long long n 의 각 바이트의 값을 출력하는 예제가 됩니다.

댓글을 작성하려면 로그인해야 합니다.