C++是否支持ASCII?

Lig*_*ica 2 c++ language-lawyer

一位同事告诉我:

C++不支持ASCII.

C++程序的源字符集是实现定义的,所以我的同事在多大程度上不正确?

Jea*_*ean 6

C++编译器必须是ASCII知道,当它的数字链接48的价值'0'.所以是的,它需要具有ASCII感知能力.

但它总是需要吗?想象一下你使用EBCDIC('0' => 240).然后编译器可能不关心ASCII.也许这就是你同事的意思.

一般来说,C++并不真正关心ASCII.这是一个实现细节.

  • [这里讨论过](http://stackoverflow.com/questions/15598698/subtracting-0/15598711#15598711)前一段时间.[Bo Persson](http://stackoverflow.com/users/597607/bo-persson)说:"在我工作的机器上我们有'0'=> 240,但是'9' - '0'仍然是9 ` (3认同)

Lig*_*ica 5

C++ 标准文本“知道”ASCII,因为它在脚注中进行了非规范性提及:

[C++11: Footnote 14]:基本源字符集成员的字形旨在从对应于 ASCII 字符集的 ISO/IEC 10646 子集中识别字符。然而,因为从源文件字符到源字符集的映射(在翻译阶段 1 中描述)被指定为实现定义,所以需要一个实现来记录基本源字符如何在源文件中表示。

这样做是在声明标准化语言本身不支持ASCII。

“对我来说似乎是对 ASCII 的认识!” 你可能会说。嗯,不。仅仅在语言定义中提到“ASCII”并没有使语言能够识别 ASCII。这与您可以对机器人进行编程以说出“我没有自我意识”这两个词的方式相同,而无需机器人意识到自我。

  • 但是,“通用字符名称”的定义基于通用字符集 (ISO/IEC 10646),它是 ASCII 的超集。所以该语言确实对 ASCII 有一些认识。 (2认同)