字符串文字和字符串文字在标准?

我对这四个术语感到困惑:

  • 字符串文字

  • 字符常量

  • 字符串字面量。

  • 多字节字符序列

  • 阅读C标准中的这个引用:

    字符串文字不一定是一个字符串 (见7.1.1),因为一个空字符可能被一个转义序列嵌入。

    第一部分是什么意思?


    字符串文字是

  • 字符串文字,例如"abc" ;
  • 或UTF-8字符串文字,例如u8"abc" ;
  • 或宽字符串文字,例如L"abc"
  • 从标准(重点是我的):

    字符串文字是由双引号括起来的零个或多个多字节字符序列,如"xyz" 。 一个UTF-8字符串文字是相同的,除了前缀为u8。 宽字符串文字是相同的,除了字母LuU前缀。
    ....
    在翻译阶段7,一个字节或值为零的代码被附加到每个多字节字符序列,这些字符序列是由一个或多个字符串产生的。 78)

    78)字符串文字不一定是一个字符串(见7.1.1),因为一个空字符可能被一个 0转义序列嵌入。


    一个字符串是一个连续的字符序列,由第一个空字符结尾并包含它们

    因此,字符串文字在中间甚至开始处也可能有 ,例如"ab""ab" 。 我认为这是脚注说的。

    字符常量是单引号中的c-char序列(通常是单个字符),并带有可能的前缀L / u / U

    整数字符常量是用单引号括起来的一个或多个多字节字符序列,如'x' 。 宽字符常量是相同的,除了字母LuU前缀。

    所以这个术语不是很对称,IMO。 例如,宽字符常量是字符常量的特例。 然而,字符串文字和宽字符串文字都属于字符串文字。

    链接地址: http://www.djcxy.com/p/38613.html

    上一篇: character string literal and string literal in standard?

    下一篇: nrepl version in new luminus project