我还是初学者。
我的一些老师说转义序列是字符,而其他人说它们是特殊的#34;字符串。
他们究竟是什么?
答案 0 :(得分:2)
取决于您如何包含转义序列,单引号或双引号。
基本上,转义序列类似于在代码中表示与实际外观不同的单个字符。
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个),它并不意味着字面意思,而是另一个字符。它将在编译后转换为该字符。
答案 1 :(得分: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是 不能表示为执行字符集中的单个字节 literal具有int类型和实现定义值
答案 2 :(得分:1)
转义序列是在源代码中对字符进行编码的另一种方法。它们最重要的作用是表示不能直接在代码中使用的字符。
这类人物分为两类:
第一类中的字符(NUL
character除外)可以在C字符串中自己表示,但它们在不同的计算机上可能看起来很奇怪或不同;他们只是一个烦恼。
此群组中最知名的字符是换行符(\n
),制表符(\t
)和NUL
character(\0
)。
不能使用第二类中的字符,因为它们具有特殊含义。这些字符是引号("
)(它的存在意味着字符串的结尾)和撇号('
)(用于包含字符文字)。
为了让其中一个成为字符或字符串的语言表示,必须对它们进行转义。这意味着,在字符串中,\"
代表"
字符,撇号字符编码为'\''
。
这样,反斜杠字符(\
)也变得特殊,必须进行转义(\\
)才能在字符串或字符中表示自己。
答案 3 :(得分:1)
转义序列是一组字符。所以数据类型只取决于你使用它们的方式。