加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 64位减法结果为32位整数

发布时间:2020-12-16 10:20:29 所属栏目:百科 来源:网络整理
导读:有一个名为“比较”的现有功能,即 int compare(void* A,void* B) { return (int)A - (int)B; } 我知道这是一个残暴的做法,但我没有编写那段代码,而且它已经在许多地方使用了.但是这段代码在64位下产生了编译错误,因为void *不再是32位,所以我将代码修改为以
有一个名为“比较”的现有功能,即

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); }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读