如何使用c在8/16/32位机器上查找处理器字大小

如何使用c在8/16/32位机器上查找处理器字大小,c,linux,C,Linux,字的大小取决于处理器,这是真的吗? 对于8位处理器,它是8位吗? 对于16位处理器,它是16? 对于32位处理器,它将是32位? 在8/16/32位机器上定义字长有什么通用规则吗?这取决于如何定义“单词”。在流行的定义中,一个单词总是16位。但是由于您指的是C编程语言,我假设您想知道类型int的宽度。这已经被问过很多次了,例如: 字的大小取决于处理器,这是真的吗 是的,如果“字的大小”是指处理器的通用寄存器的大小 在8/16/32位机器上定义字长有什么通用规则吗 不,不是在C语言中。这在今天的大

字的大小取决于处理器,这是真的吗? 对于8位处理器,它是8位吗? 对于16位处理器,它是16? 对于32位处理器,它将是32位?
在8/16/32位机器上定义字长有什么通用规则吗?

这取决于如何定义“单词”。在流行的定义中,一个单词总是16位。但是由于您指的是C编程语言,我假设您想知道类型
int
的宽度。这已经被问过很多次了,例如:

字的大小取决于处理器,这是真的吗

是的,如果“字的大小”是指处理器的通用寄存器的大小

在8/16/32位机器上定义字长有什么通用规则吗


不,不是在C语言中。

这在今天的大多数处理器中基本上是正确的,因此一个简单的
sizeof(void*)
将告诉您每个地址的字节数


然而,正如您在中所看到的,虽然这是现代机器的典型特征,但它并不总是一条有用的规则。

尺寸是
sizeof
所说的:
sizeof(int)
sizeof(size\u t)
sizeof(void*)
是最重要的尺寸。乘以CHAR_BIT得到位数。[A]字始终是16位,这只是微软MS-DOS/16位MS Windows/WinAPI的经典定义,我相信Intel syntax x86汇编的观点。一般来说,是特定处理器上的自然数据单位。@mctylr I stand corrected。我不知道是谁开始滥用这个词,但英特尔做出了重要贡献,打破了最初的定义,在8位处理器(8080)的文档中,将“word”与16位数据同义。即使是32位微处理器也无法擦除该内存。我编辑了我的帖子,用更合适的“流行”替换了“经典”。