gpt4 book ai didi

c - win32 与 x64 代码比较

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:45 25 4
gpt4 key购买 nike

我正在研究一些代码:

    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?

最佳答案

printfp 说明符需要一个void *。相反,您传递的是 int(练习:为什么它是 int?),因此行为未定义。为您要打印的内容使用正确的说明符(也许是 cxu?)。

关于c - win32 与 x64 代码比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18586277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com