포인터 질문입니다.

snakebird의 이미지

#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char **argv){
	u_char mem[]= { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
	u_char *p = mem;
	u_short d;
	u_short *dp;
	u_int32_t *lp;
 
	printf("%02hx\n", *p);
	dp = (u_short*) p;
	printf("%04hx\n", *dp);
	p += 2;
	lp = (u_int32_t*) p;
	printf("%08hx\n", *lp);
}

root@mars:/home/xau# ./a.out
01
0201
00000403
root@mars:/home/xau#

왜 printf("%08hx\n", *lp); 부분이 06050403 으로 안나오고 00000403 으로 나오죠???

익명 사용자의 이미지

이걸로 바꿔서 해보세요

printf("%08x\n", *lp);
snakebird의 이미지

감사합니다. 해결됐습니다. (__)