转义序列
以下转义序列可用。如果反斜杠后面跟着任何未在此处列出的字符,ISO C 要求进行诊断
转义 序列 |
描述 | 表示 |
---|---|---|
简单转义序列 | ||
\'
|
单引号 | ASCII 编码中的字节 0x27 |
\"
|
双引号 | ASCII 编码中的字节 0x22 |
\?
|
问号 | ASCII 编码中的字节 0x3f |
\\
|
反斜杠 | ASCII 编码中的字节 0x5c |
\a
|
可听铃声 | ASCII 编码中的字节 0x07 |
\b
|
退格 | ASCII 编码中的字节 0x08 |
\f
|
换页 - 新页面 | ASCII 编码中的字节 0x0c |
\n
|
换行 - 新行 | ASCII 编码中的字节 0x0a |
\r
|
回车 | ASCII 编码中的字节 0x0d |
\t
|
水平制表符 | ASCII 编码中的字节 0x09 |
\v
|
垂直制表符 | ASCII 编码中的字节 0x0b |
数字转义序列 | ||
\nnn
|
任意八进制值 | 代码单元 nnn |
\xn...
|
任意十六进制值 | 代码单元 n... (任意数量的十六进制数字) |
通用字符名称 | ||
\unnnn (自 C99) |
Unicode 允许范围内的值; 可能导致多个代码单元 |
代码点 U+nnnn |
\Unnnnnnnn (自 C99) |
Unicode 允许范围内的值; 可能导致多个代码单元 |
代码点 U+nnnnnnnn |
通用字符名称的范围如果通用字符名称对应于一个不为 |
(自 C99) |
[编辑] 说明
\0 是最常用的八进制转义序列,因为它代表了空终止字符串中的终止空字符。
换行符 \n 在文本模式 I/O 中使用时具有特殊含义:它将被转换为特定于操作系统的换行字节或字节序列。
八进制转义序列的长度限制为三个八进制数字,但如果遇到更早的非有效八进制数字的字符,则会在该字符处终止。
十六进制转义序列没有长度限制,并在遇到第一个非有效十六进制数字的字符处终止。如果单个十六进制转义序列表示的值不适合此字符串字面量或字符常量 (char, char8_t(自 C23), char16_t, char32_t(自 C11) 或 wchar_t) 中使用的字符类型的表示范围,则结果未指定。
窄字符串字面量 或 16 位字符串字面量(自 C11) 中的通用字符名称可能映射到多个代码单元,例如 \U0001f34c 在 UTF-8 中是 4 个 char 代码单元 (\xF0\x9F\x8D\x8C),而在 UTF-16 中是 2 个 char16_t 代码单元 (\xD83C\xDF4C)(自 C11). |
(自 C99) |
对应于大于 |
(自 C99) (直到 C23) |
问号转义序列 \? 用于防止在字符串字面量中解释三字母词:诸如 "??/" 的字符串将编译为 "\",但如果第二个问号被转义,就像在 "?\?/" 中一样,它将变为 "??/" |
(直到 C23) |
[编辑] 示例
#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?"
[编辑] 参考
- C17 标准 (ISO/IEC 9899:2018)
- 5.2.2 字符显示语义 (p: 18-19)
- 6.4.3 通用字符名称 (p: 44)
- 6.4.4.4 字符常量 (p: 48-50)
- C11 标准 (ISO/IEC 9899:2011)
- 5.2.2 字符显示语义 (p: 24-25)
- 6.4.3 通用字符名称 (p: 61)
- 6.4.4.4 字符常量 (p: 67-70)
- C99 标准 (ISO/IEC 9899:1999)
- 5.2.2 字符显示语义 (p: 19-20)
- 6.4.3 通用字符名称 (p: 53)
- 6.4.4.4 字符常量 (p: 59-61)
- C89/C90 标准 (ISO/IEC 9899:1990)
- 2.2.2 字符显示语义
- 3.1.3.4 字符常量
[编辑] 另请参见
C++ 文档 转义序列
|