为什么C11递归定义字符常量?
Why C11 define character constant recursively?
字符常量在c11中定义为:
语法
字符常量:
' c-char-sequence '
L' c-char-sequence '
你'c-char-sequence'
U'c-char-sequence'
c 字符序列:
c-字符
c-char 序列 c-char
c-字符:
除单引号 '、反斜杠 \ 或换行符外的任何源字符集成员
转义序列
它是递归定义的,所以在单引号内,有一个或多个c-chars,如'abc'.
然而,据我所知,一个字符常量只包含一个 c-char,比如 'a',不是吗?
as I know, a character constant contains only one c-char, like 'a', doesn't it?
不是,'abcd'
也是字符常量。它的值在技术上是实现定义的,但在我看到的所有地方,它都是由字符的值组成的,以大端顺序排列(在这种情况下,0x61626364)
cppreference的C端有各种讨论character constants
字符常量在c11中定义为:
语法
字符常量:
' c-char-sequence '
L' c-char-sequence '
你'c-char-sequence'
U'c-char-sequence'
c 字符序列:
c-字符
c-char 序列 c-char
c-字符:
除单引号 '、反斜杠 \ 或换行符外的任何源字符集成员
转义序列
它是递归定义的,所以在单引号内,有一个或多个c-chars,如'abc'.
然而,据我所知,一个字符常量只包含一个 c-char,比如 'a',不是吗?
as I know, a character constant contains only one c-char, like 'a', doesn't it?
不是,'abcd'
也是字符常量。它的值在技术上是实现定义的,但在我看到的所有地方,它都是由字符的值组成的,以大端顺序排列(在这种情况下,0x61626364)
cppreference的C端有各种讨论character constants