如何以编程方式检测64位或32位机器?

foo*_*bar 2 64-bit 32-bit 32bit-64bit

我不明白32位和64位是什么意思.似乎人们说64位计算机运行速度更快 - 但为什么呢?这是否意味着有64位整数而不是32位?如果它是这样的,有没有办法编写程序来确定我们是在32位还是64位机器上?

Mel*_*Mel 6

在64位机器上,指针是8个字节(64位).在32位机器上,它们是4个字节(32位).因此,我们可以通过指针的大小来确定我们正在处理的内容,它是最简单的形式:

#define IS_64BIT (sizeof(void *) == 8)
Run Code Online (Sandbox Code Playgroud)

唯一的缺点是在32位模式下运行的64位计算机将注册为32位.当然,这并不重要,因为对于所有意图和目的,64位计算机上的32位操作系统将是32位计算机.