为什么%d是乱码%p却可以;
#include <stdio.h>int main()
{
int a, b;
b = 100;
a = &b;
printf("%d\n", a);
return 0;
}
%p 是显示变量所在的内存地址。
%p 肯定不会乱码,什么数据都有地址。 因为你不用指针指向一个整数的地址,还用%d输出,肯定是乱码
但你用%p就不一样,每个数据都有地址的 %p 是输出地址的,%d 是输出整形的。
用 %d 输出 地址当然不行 本帖最后由 sunrise085 于 2020-3-25 15:41 编辑
地址本来就很长啊。
你将变量b的地址赋值给a,然后用int输出。
为什么你称之为乱码?难道输出不是数字?
int类型在不同的系统上长度可能不一样。
你可以同时输出%d 和%p看看是不是一样。
地址过高的话,int会输出负数哟。
#include <stdio.h>
int main()
{
int a, b;
b = 100;
a = &b;
printf("%p\n", a);
printf("%d\n", a);
return 0;
}
结果如下:
0x3c44e9b8
1011149240
这俩数是一样的。你可以将16进制的数转为10进制看看 sunrise085 发表于 2020-3-25 15:36
地址本来就很长啊。
你将变量b的地址赋值给a,然后用int输出。
为什么你称之为乱码?难道输出不是数字?
...
好吧……
页:
[1]