是字符集一个字符字面保证是ASCII的?(Is the character set of a cha

2019-07-03 10:46发布

从讨论即将开始在这里 ,没有标准的字符指定值? 那么,是'0'保证是48? 这就是ASCII会告诉我们,但它保证? 如果没有,你有没有看到任何编译器在哪里'0'是不是48?

Answer 1:

号有用于不要求源或执行字符集使用的编码与ASCII的子集。 我还没有看到任何非ASCII实现,但我知道谁知道谁的人有。 (这是要求“0” - “9”有连续的整数值,但是这是一个重复的问题,其他地方的SO)

用于源字符的编码中设置控制如何的源代码中的字节被解释成在C ++语言中使用的字符。 该标准描述了设置为具有值执行字符的成员。 这是这些字符映射到它们相应的值确定的整数值的编码'0'

虽然至少所有的基本源字符集的成员加上一些控制字符和具有值零的空字符的必须存在(用适当的值)在执行字符集,不要求对于编码为ASCII或使用ASCII值的任何字符的特定子集(而不是空字符其他)。



Answer 2:

没有,标准是非常小心,不要指定源字符编码是什么。

C和C ++编译器上EBCDIC计算机上运行,你知道,在'0' != 0x30

不过,我相信,要求'1' == '0' + 1



Answer 3:

这是0xF0在EBCDIC。 我从来没有使用EBCDIC编译器,但有人告诉我,他们曾风靡一时,在IBM一会儿。

有在C不要求++标准,源或执行编码是基于ASCII的。 这是保证'0' == '1' - 1 (和一般的是,数字是连续的且在顺序)。 它保证该字母是连续的,并且确实在EBCDIC 'J' != 'I' + 1'S' != 'R' + 1



Answer 4:

根据C ++ 11参考标准N3225

对于基本源字符集的成员的字形旨在从ISO / IEC 10646,其对应于ASCII字符集的所述子集识别的字符。 然而,由于从源映射网络文件的字符,以源代码字符集(在转换阶段1所描述的)是SPECI音响ED作为实施德音响定义,一个实现是必需的,以记录基本源字符是如何在源连接LES表示

总之,不需要字符集映射到ASCII表,尽管我从来没有听说过有什么不同的实现



文章来源: Is the character set of a char literal guaranteed to be ASCII?