c++问题 有关printf 和 地址的问题

int x =10;
printf("%d\n",&x);
①请问printf("%d\n",&x);是按十进制格式输出地址吗?
②为什么以下程序执行后结果是1638212?

③x的地址是什么,怎样知道x的地址
图片说明

printf("%d %x\n",&x&x); %d 这个取的地址位的十进制。。%x 这个取的就是地址位的十六进制

1.%d输出的是十进制数
2.1638212是x地址的十进制数
3.x的地址应该用printf(“0x%x\n”, &x);输出的才是十六进制的

内存中的地址其实就是片空间,这个空间需要一个编号才能给其它的东西用。而这个编号在计算里是用0和1来编的,但是这个编号用0和1来表示的话太长,所以才有了十进制,十六进制。只不过换了一种表现形式。你把他们换成二进制一定是一样的。

printf("%d\n",&x)是按十进制格式输出地址,因为&x的结果为十六进制的地址(X86下),又把地址以%d形式输出,也就是把十六进制的地址以
十进制输出,要知道x的地址printf("%p\n",&x);