int n=0x11223344;

 printf("%x\n", *(char*)&n);

 printf("%x\n", *(short*)&n);
 printf("%x\n", *(int*)&n);

 

 

사용자 삽입 이미지

 

* little_endian 과 big_endian

little_endian은 메모리에 데이터를 저장할 떄 낮은 주소에서 높은 주소로 하위 byte부터 상위 byte까지 저장하는 방식

big_endiad은 낮은 주소에서 높은 주소로 상위 byte부터 하위 byte까지 저장하는 방식.

 

위의 예제를 참고하면 littel_endian은 낮은 번지순으로 0x44 0x33 0x22 0x11이 저장될 것이다.

big_endian은 낮은 번지순으로 0x11 0x22 0x33 0x44가 저장될 것이다.

char형으로 캐스팅 된 경우 4바이트중 1바트만 잘라서 나머지는 버려진다.

shore형인경우 2바이트로 자르는 것을 볼 수있고

int형인 경우 4바이트 모두 보여진다.

 

위의 경우는 자료형이 큰 자료형에서 작은 자료형으로 캐스팅 되기때문에 자료가 날아가지만

작은 자료형에서 큰 자료형으로 캐스팅 될 경우는 쓰레기 값이 나올것이다.

 

'-포인터' 카테고리의 다른 글

포인터와 배열 II  (0) 2008.07.10
포인터와 배열  (0) 2008.07.01
배열  (0) 2008.06.30
포인터  (0) 2008.06.30
변수와 메모리(2)  (0) 2008.06.30
변수와 메모리  (0) 2008.06.30
Posted by hyunny82
2008.06.30 00:34

char c='A';
 int n=10;
 long l=101;
 float f=5.25f;
 double d=5.25;

 printf("%d\n",sizeof(c));
 printf("%d\n",sizeof(n));
 printf("%d\n",sizeof(l));             //변수의 크기
 printf("%d\n",sizeof(f));
 printf("%d\n",sizeof(d));

  puts("======");
 printf("%d\n",sizeof(&c));
 printf("%d\n",sizeof(&n));
 printf("%d\n",sizeof(&l));         //변수의주소 크기
 printf("%d\n",sizeof(&f));
 printf("%d\n",sizeof(&d));

 
  puts("======");
 printf("%d\n",sizeof(char));
 printf("%d\n",sizeof(int));
 printf("%d\n",sizeof(long));       //자료형의 크기
 printf("%d\n",sizeof(float));
 printf("%d\n",sizeof(double));

  puts("======");
 printf("%d\n",sizeof(char*));
 printf("%d\n",sizeof(int*));
 printf("%d\n",sizeof(long*));      //포인터형의 크기
 printf("%d\n",sizeof(float*));
 printf("%d\n",sizeof(double*));

 

사용자 삽입 이미지

'-포인터' 카테고리의 다른 글

포인터와 배열 II  (0) 2008.07.10
포인터와 배열  (0) 2008.07.01
배열  (0) 2008.06.30
포인터  (0) 2008.06.30
변수와 메모리(2)  (0) 2008.06.30
변수와 메모리  (0) 2008.06.30
Posted by hyunny82

티스토리 툴바