小编xor*_*xor的帖子

64位减法结果为32位整数

有一个名为"比较"的现有功能,即

int compare(void* A, void* B) { return (int)A - (int)B; }
Run Code Online (Sandbox Code Playgroud)

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

int compare(void* A, void* B) { return (long long)A - (long long)B; }
Run Code Online (Sandbox Code Playgroud)

在当前的64位Linux体系结构下,此函数返回错误结果的可能性有多大?也就是说,两个虚拟地址分开超过0x7FFFFFFF的可能性是多少?

c++ 64-bit

3
推荐指数
1
解决办法
1093
查看次数

表达中的DEFINE()宏用法

所以我定义..

#define RADIAN(x) x*3.14159265f/180.0f
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

RADIAN(theta-90)
Run Code Online (Sandbox Code Playgroud)

我的程序经常给我不正确的结果,我花了几个小时才意识到上述声明和下面的声明之间存在巨大差异.

RADIAN((theta-90))
Run Code Online (Sandbox Code Playgroud)

现在我的程序运行得很好.为什么第一个陈述不正确?

c++ c-preprocessor

2
推荐指数
1
解决办法
936
查看次数

标签 统计

c++ ×2

64-bit ×1

c-preprocessor ×1