- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我和我的 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/
瑾色 残颜 荒妙 离故 末栀 荒谬 速恋° 如若 暖然 浅黛っ 疏离 柔眸 蝶变 柠栀。 消逝 斑驳 梦巷 落墨 遗梦 守候 悸动° 初
我是一名优秀的程序员,十分优秀!