C语言基本执行字符集总字符数及cppreference内容矛盾咨询
C语言基本执行字符集(BECS)字符数与cppreference内容矛盾解析
标准中的明确定义
根据C17/C23标准:
- 基本源字符集(BSCS)共96个字符:26个大写拉丁字母、26个小写拉丁字母、10个阿拉伯数字、29个图形标点符号,以及5个空白控制字符(空格、换行、回车、水平制表、垂直制表)。
- 基本执行字符集(BECS)是BSCS的真超集,必须包含BSCS的全部字符,且至少额外支持3个控制字符(警报
BEL、退格BS、换页FF);部分实现会扩展到5个额外控制字符。
cppreference页面的矛盾根源
你遇到的三处页面表述冲突,是部分页面的表述不严谨导致的:
- 字符集页面的“BECS包含BSCS全部成员加5个控制字符”,符合部分实现的扩展情况,也正确体现了BECS作为超集的属性;
- 内存模型页面的“BECS有96个需单字节存储的字符”,表述遗漏了额外的控制字符,实际这里的96个仅指BECS中对应BSCS的部分,并非全部BECS字符;
- 翻译阶段页面关于BSCS含96个字符的描述是完全准确的。
结论
BECS的总字符数必然大于96,具体数量取决于实现(至少是96+3=99个),cppreference的矛盾属于局部页面表述不完整,而非标准定义的冲突。
内容的提问来源于stack exchange,提问作者yg-i
相关产品推荐
相关产品推荐

