我知道一个字节是CPU内存的最小可寻址代码单元,所以x86-32机器中的字节大小是8位,但是c ++标准规定sizeof(char)==1 bytes>=8 bits,所以我可以有一个x86-32机器的编译器具有sizeof(char)==16 bits哪个意思那个字节是16位.
所以在这个例子中,字节是关于CPU的8位,从编译器的角度来看是 16位.那么字节的定义是什么,它的大小是什么?
编译器决定这一点.但是,在C和C++的情况下,出于性能原因,编译器通常遵循CPU.
在最小可寻址单元为16位宽的平台上,编译器可以实现8位,char但它必须(1)发出指令以从16位"字节"中获取8位单元,并且(2)每个char*或void*需要一个额外的位来指示下半部分/上半部分.
反之亦然,您可以char在x86上实现16位的编译器,但这意味着所有C字符串将占用通常的内存的两倍,并且很难与外部世界接口,这就是说8位char.