为什么CHAR_BIT通常取值为8?
为什么CHAR_BIT通常为8?
这是个挺关键的问题,咱们结合C++11的工作草案N4140来唠清楚:
C++内存模型中的基本存储单元是字节。字节至少要足够容纳基本执行字符集中的任意成员以及Unicode UTF-8编码形式的八位代码单元,并且由连续的比特序列组成,比特数量由实现定义。(§6.6.1-1; p.48)
说白了,UTF-8的八位代码单元本身就需要8个比特才能完整存储——它的取值范围覆盖0x00到0xFF,刚好是8个比特能承载的所有可能值。为了满足标准里“必须容纳UTF-8八位代码单元”的硬性要求,绝大多数实现都会把CHAR_BIT设为8,这也成了如今各类系统的通用选择。
内容的提问来源于stack exchange,提问作者ynn
相关产品推荐
相关产品推荐

