C99中的描述:
"An integer character constant is a sequence of one or more multibyte characters enclosed
in single-quotes, as in 'x'. A wide character constant is the same, except prefixed by the
letter L. With a few exceptions detailed later, the elements of the sequence are any
members of the source character set; they are mapped in an implementation-defined
manner to members of the execution character set."
"An integer character constant has type int. The value of an integer character constant
containing a single character that maps to a single-byte execution character is the
numerical value of the representation of the mapped character interpreted as an integer.
The value of an integer character constant containing more than one character (e.g.,
'ab'), or containing a character or escape sequence that does not map to a single-byte
execution character, is implementation-defined. If an integer character constant contains
a single character or escape sequence, its value is the one that results when an object with
type char whose value is that of the single character or escape sequence is converted to
type int."
标准中明确规定了字符常量的类型为int,所以sizeof('a')的值为4,sizeof('abcde')的值同样为4。
"The value of an integer character constant containing more than one character (e.g., 'ab'), or
containing a character or escape sequence that does not map to a single-byte execution character,
is implementation-defined."
多字符的字符常量的值是由编译器来决定的:
本文详细解析了C99标准中关于字符常量的规定,包括单字符和多字符常量的定义、类型及值的计算方式。并介绍了不同情况下字符常量的表现及其在编译器中的实现差异。
3692

被折叠的 条评论
为什么被折叠?



