c/language/character constant

Syntax
where
 * is either
 * a character from the basic source character set minus single-quote, backslash , or the newline character.
 * escape sequence: one of special character escapes         , hex escapes  or octal escapes  as defined in.


 * is a sequence of two or more s.

@1@ single-byte integer character constant, e.g. or  or. Such constant has type and a value equal to the representation of  in the execution character set as a value of type  mapped to. If is not representable as a single byte in the execution character set, the value is implementation-defined. @2@ UTF-8 character constant, e.g. . Such constant has type and the value equal to ISO 10646 code point value of, provided that the code point value is representable with a single UTF-8 code unit (that is,  is in the range 0x0-0x7F, inclusive). If is not representable with a single UTF-8 code unit, the program is ill-formed.

@5@ wide character constant, e.g. or. Such constant has type and a value equal to the value of  in the execution wide character set (that is, the value that would be produced by mbtowc). If is not representable or maps to more than one wide character (e.g. a non-BMP value on Windows where  is 16-bit), the value is implementation-defined. @6@ multicharacter constant, e.g., has type and implementation-defined value. @7@ wide multicharacter constant, e.g., has type and implementation-defined value. @8@ 16-bit multicharacter constant, e.g., has type and implementation-defined value. @9@ 32-bit multicharacter constant, e.g., has type and implementation-defined value.