谁决定一个字节的大小,是编译器还是CPU?

时间:2014-04-17 11:19:09

标签: c++ c byte

我知道一个字节是CPU内存的最小可寻址代码单元,因此x86-32机器中的字节大小为8位,但c ++标准规定sizeof(char)==1 bytes>=8 bits,所以我可以有一个编译器x86-32机器有sizeof(char)==16 bits,表示该字节是16位。

所以在这个例子中,字节是关于CPU的8位,从编译器的角度来看它是16位。所以字节的定义是什么,是什么决定它的大小?

1 个答案:

答案 0 :(得分:6)

编译器决定这一点。但是,在C和C ++的情况下,出于性能原因,编译器通常遵循CPU。

在最小可寻址单元为16位宽的平台上,编译器可以实现8位char,但它必须(1)发出指令以获得8位16位"字节" (2)每char*void*需要一个额外的位来表示下半部分/上半部分。

反之亦然,您可以在x86上使用16位char实现编译器,但这意味着所有C字符串的内存都会比通常多两倍,并且很难与外面的世界,它说8位char