【发布时间】:2017-11-17 12:45:35
【问题描述】:
我还是个初学者。
我的一些老师说转义序列是字符,而另一些老师说它们是“特殊”字符串。
它们到底是什么?
【问题讨论】:
-
字符串是字符序列。这两个答案并不矛盾。
-
这两种描述都是合理的。
标签: c++
我还是个初学者。
我的一些老师说转义序列是字符,而另一些老师说它们是“特殊”字符串。
它们到底是什么?
【问题讨论】:
标签: c++
取决于您如何括住转义序列、单引号或双引号。
基本上,转义序列类似于在代码中表示的单个字符,与实际看起来不同。
char ch = '\n'; // This is a character
const char *s = "\n"; // This is a string.
在上面的 C 示例中,\n 在字符串文字或字符文字中表示换行符。将代码编译成二进制时将不再有反斜杠和 Ns - 编译器已将转义序列转换为类似的。
总结:
\n // an escape sequence (don't use directly)
'\n' // a character containing an esc seq
"\n" // a string containint an esc seq
我的理解:
转义序列是用代码编写的字符序列(超过 1 个),这并不意味着它的字面意思,而是另一个字符。编译后会转换成那个字符。
【讨论】:
转义序列是一组字符。所以数据类型只取决于你使用它们的方式。
【讨论】:
转义序列用于表示字符串文字和字符文字中的某些特殊字符。
来自wikipedia:
转义序列用于编程语言 C 和 C++,并且 还有更多语言(有一些变体),如 Java 和 C#。 转义序列是一个字符序列,在字符或字符串字面量中使用时不代表自身,而是 被翻译成另一个字符或字符序列 可能很难或不可能直接表示。
在 C 中,所有 转义序列都由两个或多个字符组成, 第一个是反斜杠,\(称为“转义字符”); 其余字符决定转义的解释 序列。 例如,
\n是一个转义序列,表示换行符 特点。本文的其余部分侧重于 C;其他 编程语言可能有不同的语法和 语义。
语法
" (unescaped_character|escaped_character)* " (1) L " (unescaped_character|escaped_character)* " (2) u8 " (unescaped_character|escaped_character)* " (3) (since C++11) u " (unescaped_character|escaped_character)* " (4) (since C++11) U " (unescaped_character|escaped_character)* " (5) (since C++11) prefix(optional) R "delimiter( raw_characters )delimiter" (6) (since C++11)
语法
'c-char' (1)
u8 ' c-char ' (2) (C++17 起)
u ' c-char ' (3) (C++11 起)
U ' c-char ' (4) (C++11 起)
L'c-char' (5)
'c-char-sequence' (6)
在哪里
c-char 是
基本源字符集中的字符减去单引号 (')、反斜杠 () 或换行符,
转义序列,在转义序列中定义
通用字符名称,在转义序列中定义
c-char-sequence 是两个或多个 c-char 的序列。
- 窄字符文字或普通字符文字,例如
'a'或'\n'或'\13'。此类文字的类型为 char 且值等于 c-char 在执行字符集中的表示。如果 c-char 是 在执行字符集中不能表示为单个字节, 字面量具有 int 类型和实现定义的值
【讨论】:
'\n' 和 "\n" 包含 转义序列。它们不是转义序列。形式是一个字符,而后者是一个字符串。
转义序列是将源代码中的字符编码为字符的另一种方法。它们最重要的作用是表示不能在代码中直接使用的字符。
此类字符分为两类:
第一类中的字符(NUL character 除外)可以在 C 字符串中单独表示,但在不同的计算机上它们可能看起来很奇怪或不同;他们只是一个烦恼。
该组中最知名的字符是换行符 (\n)、制表符 (\t) 和 NUL character (\0)。
不能使用第二类字符,因为它们具有特殊含义。这些字符是引号 (")(它的存在意味着字符串的结尾)和撇号 (')(用于包围字符文字)。
为了让其中一个成为字符或字符串的语言表示,它们必须被转义。这意味着,在字符串中,\" 代表" 字符,而撇号字符被编码为'\''。
这样,反斜杠字符 (\) 也变得特殊,必须对其进行转义 (\\) 以在字符串或字符中表示自己。
【讨论】: