【问题标题】:Why C11 define character constant recursively?为什么 C11 递归定义字符常量?
【发布时间】:2017-09-15 00:44:15
【问题描述】:

字符常量在 c11 中定义为:
语法
字符常量:
' c 字符序列 '
L' c-char-sequence '
u' c-char-sequence '
U' c-char-sequence '
c字符序列:
c字符
c-char 序列 c-char
c字符:
源字符集的任何成员,除了单引号 '、反斜杠 \ 或换行符
转义序列

它是递归定义的,所以在单引号内,有一个或多个 c-chars,比如 'abc'。
但是据我所知,一个字符常量只包含一个 c-char,比如 'a',不是吗?

【问题讨论】:

  • 据我所知,字符是 UTF-8。它可以支持超出 ASCII 所能支持的字符。见这里stackoverflow.com/questions/10229156/…
  • Macintosh 文件系统使用四字节常量来表示文件类型和文件应用程序创建者,例如 'TEXT' 用于文本文件,'APPL' 用于应用程序。很少使用文件扩展名(主要用于编程和网络发布)。

标签: character constants c11


【解决方案1】:

据我所知,一个字符常量只包含一个 c-char,比如 'a',不是吗?

不,'abcd' 也是一个字符常量。它的值在技术上是由实现定义的,但在我所看到的任何地方,它都是由字符的值形成的,按照大端顺序(在这种情况下,0x61626364)

cppreference的C端有各种character constants的讨论

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多