编译器转换程序源代码时,所处的环境称为翻译环境(translation environment);编译后程序执行时,所处的环境称为运行环境(execution environment)。
对C语言来说,翻译环境和运行环境是不同的。因此,C语言定义了两个字符集(character set):源代码字符集与运行字符集。
在许多C语言的实现版本中,这两个字符集是一样的。如果不一样,则编译器会把源代码中的字符常量和字符串字面量转换成运行字符集中的对应元素。
这两种字符集都包含基本字符集(basic character set)和扩展字符(extended character),C语言没有指定扩展字符,这通常由本地语言所决定。扩展字符加上基本字符集,组成扩展字符集(extended character set)。
基本源代码字符集和基本运行字符集都包含了下面的字符类型:
1) 拉丁字母
2) 十进制阿拉伯数字
3) 下面29个符号
4) 5种空白符
5) 基本运行字符集还包括四个不可打印的字符:
为了在字母和字符串中表示这些字符,输入反斜杠\加对应的转义序列(escape sequence)即可,例如,\0表示 null 字符(空字符),\a表示警报,\b表示退格,而\r表示回车。
不同的C实现版本中,字符实际对应的数值(字符码)可能不同。C语言本身仅规定了以下规则: