响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:c:tips:escape_character

转义字符(Escape character)

转义字符有两种形式:符号形式和数字形式。

符号形式的有如下几个:

\a alert(e.g., bell) 响铃
\b backspace 回退
\f form feed 换页
\n newline 换行
\r carriage return 回车
\t horizontal tab 横向制表符
\v vertical tab 纵向制表符
\\ backslash 反斜杆
\' single quote 单引号
\“ double quote 双引号
\? question mark 问号

其中,?主要用于三元组。双引号在字符常量中不需要使用反斜杆,单引号在字符串常量中不需要反斜杆。

数字形式的有八进制和十六进制。反斜杆后面直接跟的数字是八进制数,最多可以有三个数字。

十六进制是标准C引入的,在反斜杆后跟x,然后是十六进制数字,数量不限。

虽然如此,但标准C规定,数字形式的普通字符不能超过unsigned char的范围,数字形式的宽字符不能超过wchar_t的范围。

如在ASCII中,字符'a'的八进制形式为'\141',十六进制为'\x61'。

如果数字的值在执行字符集中没有对应的字符,则结果依赖于实现(implementation-defined)。

除了以上三种转义形式,在反斜杆后出现其他形式的转义,其结果是未定义的(undefined)。

使用数字转义一定要小心,一方面它依赖于特定的字符集,从而导致可移植性问题。此外,不仔细的写法可能会出现不期望的结果。如:

  • “\0111”包含两个字符('\011'和'1')而不是一个,因为最多三个八进制数构成一个字符;
  • “\090”包含三个字符('\0','9'和'0'),因为9不是合法的八进制数;
  • “\xabc”只是一个字符,要表示两个字符,得写成:”\xab“ “c”。
computer/c/tips/escape_character.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1