机器的基本字符集

时间:2017-03-06 17:45:05

标签: c++ character-encoding char

在C ++入门书中,在原始内置类型部分中说:

  

保证char足够大,可以保存与机器基本字符集中的字符对应的数值。也就是说,char与单个机器字节的大小相同。

这个基本字符是否引用了ASCII表?

1 个答案:

答案 0 :(得分:2)

该标准不保证基本字符集应为ASCII。事实上,其他字符集已经存在并且仍然存在于特定系统上,例如EBCDIC。

唯一的保证是

  

1.7 C ++内存模型[intro.memory] ​​
  1 C ++内存模型中的基本存储单元是字节。一个字节至少足以容纳   基本执行字符集(2.3)的任何成员和Unicode UTF-8的8位代码单元   编码形式由连续的比特序列组成,其数量是实现定义的。   最低有效位称为低位;最重要的位称为高位   位。 C ++程序可用的内存由一个或多个连续字节序列组成。一切   byte有一个唯一的地址。

     

1.8 C ++对象模型[intro.object]
...
  5除非它是一个位域(9.6),否则最大的派生对象应具有非零大小并且应占用一个或多个   存储字节。

     

2.3字符集[lex.charset]
...在0之后的每个字符的值   上面的十进制数字列表应大于前一个值。

因此C ++标准保证char至少有8位,并且数字代码具有连续值。所有其他字符集属性都依赖于实现。