有一个名为“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/