可能重复: 确定我的处理器的字大小
今天是一个面试问题。但我不知道..。
我认为面试官的意思是cpu的大小。
我找到了这样的答案:
int cpu_bits(void *dummy1, void *dummy2)
{
long offset = (long)&dummy2 - (long)&dummy1;
int ret = 0;
if (8 == offset)
ret = 64;
else if (4 == offset)
ret = 32;
else if (2 == offset)
ret = 16;
else if (1 == offset)
ret = 8;
else
ret = -1;
return ret;
}
int main()
{
printf("%d\n", cpu_bits(NULL, NULL));
return 0;
} 结果似乎是对的,你认为是吗?
发布于 2011-10-10 11:26:54
简单地回答:标准没有定义保证与底层体系结构的字大小相对应的数据类型,而“字大小”在现代CPU上的含义是相当模糊的:字大小与地址大小。
由于当前处理器具有兼容性模式、不同大小的寄存器、高级寻址模式和适用于不同宽度的数据的指令,因此至少可以说,通用的“字大小”是不精确的。
我想,面试官仍然生活在90年代,还记得WinAPI在大多数电脑还只有16位的时候推出的那些不太靠谱的WinAPI和DWORD类型。
发布于 2011-10-10 11:04:43
我想他们是在期待这样的事情:
printf("%d\n", (int)sizeof(int) * CHAR_BIT);https://stackoverflow.com/questions/7711836
复制相似问题