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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |