Escape sequences
转义序列
转义序列用于表示字符串文字和字符常量中的某些特殊字符。
以下转义序列可用。如果反斜杠后面跟着没有列出的任何字符,则 ISO C 需要诊断:
Escape sequence | Description | Representation |
---|---|---|
\' | single quote | byte 0x27 (in ASCII encoding) |
\" | double quote | byte 0x22 (in ASCII encoding) |
\? | question mark | byte 0x3f (in ASCII encoding) |
\ | backslash | byte 0x5c (in ASCII encoding) |
\a | audible bell | byte 0x07 (in ASCII encoding) |
\b | backspace | byte 0x08 (in ASCII encoding) |
\f | form feed - new page | byte 0x0c (in ASCII encoding) |
\n | line feed - new line | byte 0x0a (in ASCII encoding) |
\r | carriage return | byte 0x0d (in ASCII encoding) |
\t | horizontal tab | byte 0x09 (in ASCII encoding) |
\v | vertical tab | byte 0x0b (in ASCII encoding) |
\nnn | arbitrary octal value | byte nnn |
\xnn | arbitrary hexadecimal value | byte nn |
\unnnn | Unicode character that is not in the basic character set.May result in several characters. | code point U+nnnn |
\Unnnnnnnn | Unicode character that is not in the basic character set.May result in several characters. | code point U+nnnnnnnn |
注意
在八进制转义序列中,\0
它是最有用的,因为它代表以空字符结尾的字符串中的终止空字符。
换行字符\n
在文本模式 I / O 中使用时有特殊含义:将其转换为特定于 OS 的换行字节或字节序列。
八进制转义序列的长度限制为三个八进制数字,但如果遇到较早遇到的第一个字符不是有效的八进制数字,则会终止。
十六进制转义序列没有长度限制,并且终止于不是有效的十六进制数字的第一个字符。如果由单个十六进制转义序列所表示的值不适合通过在此字符串文字或字符常量使用的字符类型表示的值的范围(char
,char16_t
,char32_t
,或wchar_t
),其结果是不确定的。
在狭窄的字符串中的通用字符名文字或16位的字符串文字可以映射到一个以上的字符,例如\U0001f34c
是4个char
在UTF-8代码单元(\xF0\x9F\x8D\x8C
)和2个char16_t
代码单元在UTF-16( \uD83C\uDF4C
))。
问号转义序列\?
用于防止在字符串文本中解释三字符:一个字符串,例如"??/"
编译为"\"
,但如果第二个问号被转义,如 "?\?/"
,则它变成"??/"
例
#include <stdio.h>
int main(void)
{
printf("This\nis\na\ntest\n\nShe said, \"How are you?\"\n"
}
输出:
This
is
a
test
She said, "How are you?"
参考
- C11 standard (ISO/IEC 9899:2011):