转义序列

来自cppreference.com
< c‎ | language

转义序列用于在字符串字面量字符常量中表示特殊字符。

下列转义序列可用。ISO C要求诊断反斜杠是否后随不列于此的字符:

转义序列 描述 表示
\' 单引号 字节0x27(以ASCII编码)
\" 双引号 字节0x22(以ASCII编码)
\? 问号 字节0x3f(以ASCII编码)
\\ 反斜杠 字节0x5c(以ASCII编码)
\a 响铃 字节0x07(以ASCII编码)
\b 退格 字节0x08(以ASCII编码)
\f 换页 字节0x0c(以ASCII编码)
\n 换行 字节0x0a(以ASCII编码)
\r 回车 字节0x0d(以ASCII编码)
\t 水平制表 字节0x09(以ASCII编码)
\v 垂直制表 字节0x0b(以ASCII编码)
\nnn 任意八进制值 字节nnn
\xnn 任意十六进制值 字节nn
\unnnn 不在基本字符集中的Unicode字符。
可能生成多个字符。
代码点U+nnnn
\Unnnnnnnn 不在基本字符集中的Unicode字符
可能生成多个字符。
代码点U+nnnnnnnn

目录

[编辑] 注意

在八进制转义序列中,\0是最有用的,因为它表示空终止字符串中的空终止字符。

换行符\n在用于文本模式I/O时有特殊含义:它被转换成操作系统指定的换行字节或字节序列。

八进制转义序拥有三个八进制数位的限制,但终止于首个非合法的八进制数位,倘若在限制前遇到。

十六进制转义序列没有长度限制,且终止于首个非合法十六进制数位。若由单个十六进制转义序列表示的值不符合用于字符串字面量或字符常量的字符类型(charchar16_tchar32_t,或wchar_t)的范围,则结果是未指定的。

窄字符串字面量或16位字符串字面量中的通用字符名可能映射到多于一个字符。例如\U0001f34c在UTF-8中是4个char代码单元(\xF0\x9F\x8D\x8C),而在UTF-16中是2个char16_t代码单元(\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):
  • 5.2.2 Character display semantics (p: 24-25)
  • 6.4.4.4 Character constants (p: 67-70)
  • C99 standard (ISO/IEC 9899:1999):
  • 5.2.2 Character display semantics (p: 19-20)
  • 6.4.4.4 Character constants (p: 59-61)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 2.2.2 Character display semantics
  • 3.1.3.4 Character constants

[编辑] 参阅

转义序列C++ 文档