5.2.1 字符集
应定义两套字符及其相关排序序列:一套用于编写源文件,称为源字符集;另一套用于执行环境解释,称为执行字符集。这两套字符集都进一步划分为:
- 基本字符集:其内容由本小节给出;
- 扩展字符:零个或多个与区域设置相关、且不属于基本字符集的成员。
二者合起来也称为扩展字符集。执行字符集成员的值,由实现定义。
在字符常量或字符串字面量中,执行字符集中的成员,应由源字符集中的对应成员,或由以反斜杠
\开头、后接一个或多个字符的转义序列来表示。基本执行字符集中必须存在一个所有位都为0的字节,称为空字符,它用于终止字符串。基本源字符集和基本执行字符集都必须包含以下成员:
- 拉丁字母表中的 26 个大写字母:
text
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z1
2
2
- 拉丁字母表中的 26 个小写字母:
text
a b c d e f g h i j k l m
n o p q r s t u v w x y z1
2
2
- 10 个十进制数字:
text
0 1 2 3 4 5 6 7 8 91
- 以下 32 个图形字符:
text
! " # % & ' ( ) * + , - . / :
; < = > ? [ \ ] ^ _ { | } ~
@ $ `1
2
3
2
3
- 空格字符,以及表示水平制表、垂直制表和换页的控制字符。
源字符集和执行字符集的每个基本字符集成员的表示都必须能够装入一个字节。
在源基本字符集和执行基本字符集中,上面十进制数字列表中每个数字字符,其值都应比前一个数字字符大
1。在源文件中,必须存在某种表示每一行文本结束的方式;本文档把这种行结束标志视为一个单独的换行字符。
在基本执行字符集中,还应存在表示响铃、退格、回车和换行的控制字符。
如果在源文件中出现了其他字符,并且它们不在以下情形之内:
- 标识符中;
- 字符常量中;
- 字符串字面量中;
- 头名称中;
- 注释中;
- 永远不会被转换为记号的某个预处理记号中;
则行为未定义。
本文档中的“字母”,是指本小节前面定义的大写字母或小写字母;不包括其他字母表中的字母。
通用字符名机制提供了一种命名其他字符的方式。
前向引用:通用字符名(6.4.3)、字符常量(6.4.4.5)、预处理指令(6.10)、字符串字面量(6.4.5)、注释(6.4.9)、字符串(7.1.1)。