在C ++入门书中,在原始内置类型部分中说:
保证
char
足够大,可以保存与机器基本字符集中的字符对应的数值。也就是说,char
与单个机器字节的大小相同。
这个基本字符是否引用了ASCII表?
答案 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位,并且数字代码具有连续值。所有其他字符集属性都依赖于实现。