#include <stdio.h>
int main(void)
{
int n = 7;
printf("n: %d ", n);
printf("&n: %x ", &n);
printf("&n: %lx ", &n);
printf("&n<<4: %lx ", (int)&n<<4);
printf("포인터 하나당 크기는 %ld 바이트 ", sizeof(void *));
printf("&n: %p ", &n);
printf("================================ ");
printf("&n %p ", &n);
printf("&n %p ", (void*)((long long)&n << 4));
printf("&n %p ", (void*)((uint64_t)&n << 4));
printf("&n %p ", (void*)((unsigned int)&n << 4));
printf("&n %p ", (void*)((long long)&n << 8));
printf("&n %p ", (void*)((long long)&n << 12));
printf("&n %p ", (void*)((long long)&n << 16));
printf("&n %p ", (void*)((long long)&n << 20));
putchar(' ');
return 0;
}
이거 실행하면 출력문이
n: 7
&n: efbff5c8
&n: 7ffeefbff5c8
&n<<4: fbff5c80
포인터 하나당 크기는 8 바이트
&n: 0x7ffeefbff5c8
================================
&n 0x7ffeefbff5c8
&n 0x7ffeefbff5c80
&n 0x7ffeefbff5c80
&n 0xfbff5c80
&n 0x7ffeefbff5c800
&n 0x7ffeefbff5c8000
&n 0x7ffeefbff5c80000
&n 0xffeefbff5c800000
Program ended with exit code: 0
앞에 0인건 생략되서 안나오는걸로 생각하는게 맞는거 같아.
근데 unsigned int로 출력할땐 제대로 안나오넹...
개초보라 자료형이 달라질때 어떻게 변하는 규칙은 모르겠네
qword bword 라는것도 아직 안배워서 잘 모름...
그래서 앞에 0이 생략된건 맞는듯
떙큐~
이 댓글 기준으로 본문 깔끔해짐
주소는 64비트고, unsigned int는 32비트라서 32비트까지만 시프트 연산이 이루어짐
long long uint64_t 이런거는 64비트짜리 자료형이라서 64비트 다 시프트연산을 하는거고
ㄴ ㅇㅇ 이해됨! 떙큐!
너 맥이라고했지? 아마 맥에서는 0은 생략되서 unsigned int로 할때 안 보이는 걸껄, 난 윈도우인데 잘 보임
ㄴ 지금 지금은 맥밖에 없는데 나중에 윈도에서도 꼭 해볼게!