#include <stdio.h>
union Endian
{
int i;
char c[sizeof(int)];
};
int main(int argc, char *argv[])
{
union Endian e;
e.i = 1;
printf("%d \n",&e.i);
printf("%d,%d,\n",e.c[0],&(e.c[0]));
printf("%d,%d",e.c[sizeof(int)-1],&(e.c[sizeof(int)-1]));
}
출력 : 리틀 엔디안 또는 빅 엔디안
1567599464
1,1567599464,
0,1567599467
LSB
가 낮은 주소에 저장되며 MSB가 높은 주소에 저장됩니다. 빅 엔디안이 아닌가요? 하지만 내 시스템 구성은 리틀 엔디안 아키텍처로 보여줍니다.
"리틀 엔디안": 조금 먼저; "빅 엔디안": 큰쪽 끝 부분 먼저 큰 끝 부분 – pmg
@tez 리틀 엔디안에서는 LSB가 하위 주소에 저장됩니다. 하위 주소는 왼쪽에서 시작하는 주소입니다. 그리고 LSB는 조잡한 의미로 가장 오른쪽 바이트입니다 수학적 바이너리 표현입니다. 그래서 가장 오른쪽의 바이트는'little-endian'의 가장 왼쪽 주소에 저장됩니다. 여러분의 아키텍쳐가'little-endian '이니? –
@tez 주소를 출력 할 때마다' void *'를 사용하고'% p' 형식 지정자를 사용합니다.'% d'는 부호있는 정수의 경우처럼 순수한 no-no입니다. 주소는 서명되지 않습니다. –