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

Ale*_*Dan 2 c c++ byte

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

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

Fre*_*Foo 6

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

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

反之亦然,您可以char在x86上实现16位的编译器,但这意味着所有C字符串将占用通常的内存的两倍,并且很难与外部世界接口,这就是说8位char.

  • 并且...有一个原因,为什么标准不要求`char*`和`int*`具有相同的大小.(在大多数情况下,硬件确实有一组有限的指令用于读取和写入单个"字节",因此这些技巧会在这些指令中播放.(例如,参见http://pdp10.nocrew.org/docs/指令集/ Byte.html,用于PDP-10.) (2认同)