来自关于 C 编程语言的 K&R 书的第 2 章(第 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),这超出了字符所需的字节长度。当然,我在这里遗漏了一些东西。我错过了什么?