#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이 생략된건 맞는듯

떙큐~