我玩了一段时间的代码:
int n;
char *ptr;
scanf("%d",&n);
ptr = (char *) &n; // pointer to the integer
printf("\na[0]=%p",*ptr); // print the values at the next 4 memory locations
printf("\na[1]=%p",*(ptr+1));
printf("\na[2]=%p",*(ptr+2));
printf("\na[3]=%p",*(ptr+3));
这段代码给了我一个干净的输出
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
在 VisualC++ '12 中的 win32 设置上输入 -1。
但是,当我为 x64 架构编译此代码时,我得到 -
00000000FFFFFFFF
00000000FFFFFFFF
00000000FFFFFFFF
00000000FFFFFFFF
对于相同的输入值 -1。两种架构的整数大小相同。我的问题是为什么内存布局在 4 个位置中并非全是 F?