从K&R关于C编程语言的第二章(子章节2.3命名为常量):
某些字符可以通过转义序列(如\n代表换行符)在字符和字符串常量中表示;这些序列看起来像两个字符,但实际上只表示一个字符。此外,任意字节大小的位模式可以被指定为
′\ooo′
其中 ooo 为一到三个八进制数字(0...7)
′\xhh′
其中hh是一个或多个十六进制数字(0...9,a...f,A...F)。因此我们可以写成
#define VTAB ′\013′ /* ASCII vertical tab */
#define BELL ′\007′ /* ASCII bell character */
or, in hexadecimal,
#define VTAB ′\xb′ /* ASCII vertical tab */
#define BELL ′\x7′ /* ASCII bell character */
我困惑的部分是以下措辞(强调我):其中ooo是一个到三个八进制数字(0...7)。如果有三个八进制数字,则所需的位数将为9(每个数字3位),这超出了字符所需的字节长度。我一定是漏了什么。我错过了什么?