c++ - 64位减法结果转32位整数

标签 c++ 64-bit

有一个名为“Compare”的现有函数,它是

int compare(void* A, void* B) { return (int)A - (int)B; }

我知道这是一种残忍的做法,但我没有编写那段代码,而且它已经在很多地方使用了。但是此代码在 64 位下生成编译错误,因为 void* 不再是 32 位,所以我将代码修复为以下内容。

int compare(void* A, void* B) { return (long long)A - (long long)B; }

在当前的 64 位 Linux 架构下,此函数返回错误结果的可能性有多大?即,两个虚拟地址相隔超过 0x7FFFFFFF 的可能性有多大?

最佳答案

我觉得你想要

int compare(void* A, void* B) { return (A > B) - (A < B); }

关于c++ - 64位减法结果转32位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7932957/

相关文章:

适用于所有 x64 平台的 gcc 通用行军

matlab - 在 32 位或 64 位 matlab 上运行?

c++ - 使用 C++ 从 MongoDb 检索 binData 记录

python - 使用 Fortran 求解器在 Windows 64 位上安装 Odespy

java - 是否有构建 64 位 JD2XX DLL 的简单方法?

delphi - Delphi 64 位项目中的 in 运算符问题

c++ - 什么是双重评估,为什么要避免它?

c++ - IDXGIKeyedMutex::ReleaseSync 什么时候呈现 "done"?

c++ - 在 VEINS 中成功接收的概率

c++ - Arduino C++:从外部类创建对象