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