gpt4 book ai didi

C++ - 荒谬的长距离

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:09 24 4
gpt4 key购买 nike

我和我的 friend 刚刚遇到了一个非常奇怪的长距离问题。所以基本上,我的电脑有一个 64 位处理器,但上面有一个 32 位系统。他同时拥有 32 位操作系统和 CPU。

首先,我们打印sizeof(long long)。对我们俩来说都是 8。

然后我们这样做了:

long long blah = 1;

printf ("%lld\n", blah<<40);

对我来说,这会返回 1099511627776(这是正确的结果)。对他来说是 0。

这怎么可能?我们都有相同的 sizeofs。

提前致谢。

编辑:我使用 Code Blocks 12.11 在 Win7 下编译并运行了它。他使用 Win XP 和相同版本的 CB。

EDIT2:请求的源代码:

#include <cstdio>

int main()
{
long long blah = 1;

printf ("%lld\n", blah<<40);

return 0;
}

#include <cstdio>

int main()
{
printf ("%d", sizeof(long long));

return 0;
}

最佳答案

我猜你和你的 friend 正在链接到臭名昭著的 MSVCRT.DLL 或其他一些库的不同版本。

来自 Code::Blocks 常见问题解答:

Q: What Code::Blocks is not?

A: Code::Blocks is not a compiler, nor a linker. Release packages of Code::Blocks may include a compiler suite (MinGW/GCC), if not provided by the target platform already. However, this is provided "as-is" and not developed/maintained by the Code::Blocks development team.

所以“我使用 Code Blocks 12.11 在 Win7 下编译和运行它”的说法并不完全正确;你不能用不是编译器的东西编译。

弄清楚你们两个实际使用的是什么编译器(见上文:它不是“代码块”)和什么库。

关于C++ - 荒谬的长距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19734687/

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