c ++中转义序列的数据类型

时间:2017-11-17 12:45:36

标签: c++

我还是初学者。

我的一些老师说转义序列是字符,而其他人说它们是特殊的#34;字符串。

他们究竟是什么?

4 个答案:

答案 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;其他   编程语言可能有不同的语法和   语义。

来自string_literal

<强>语法

" (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)

来自character_literal

语法

  

'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是

         
        
    1. 来自基本源字符集的字符减去单引号('),反斜杠()或换行符,

    2.   
    3. 转义序列,如转义序列中所定义

    4.   
    5. 通用字符名称,如转义序列中所定义

    6.   
  •   
  • c-char-sequence是两个或多个c-char的序列。

         
        
    1. 狭义字符文字或普通字符文字,例如'a'或   '\n''\13'。这样的文字有char类型,值等于   执行字符集中c-char的表示。如果c-char是   不能表示为执行字符集中的单个字节   literal具有int类型和实现定义值
    2.   
  •   

答案 2 :(得分:1)

转义序列是在源代码中对字符进行编码的另一种方法。它们最重要的作用是表示不能直接在代码中使用的字符。

这类人物分为两类:

  • 不可打印的字符(ASCII代码0..31),其外观依赖于代码页(ASCII代码128..255)和多字节字符的字符;
  • 对语言有特殊含义的字符,其含义与语言中字符串的表示有关。

第一类中的字符(NUL character除外)可以在C字符串中自己表示,但它们在不同的计算机上可能看起来很奇怪或不同;他们只是一个烦恼。

此群组中最知名的字符是换行符(\n),制表符(\t)和NUL character\0)。

不能使用第二类中的字符,因为它们具有特殊含义。这些字符是引号(")(它的存在意味着字符串的结尾)和撇号(')(用于包含字符文字)。

为了让其中一个成为字符或字符串的语言表示,必须对它们进行转义。这意味着,在字符串中,\"代表"字符,撇号字符编码为'\''

这样,反斜杠字符(\)也变得特殊,必须进行转义(\\)才能在字符串或字符中表示自己。

答案 3 :(得分:1)

转义序列是一组字符。所以数据类型只取决于你使用它们的方式。

相关问题