Character literals are a special type of integer literals that are used to represent one character. They are enclosed in single quotes, e.g. 'a'
and have the type int
. The value of the literal is an integer value according to the machine’s character set. They do not allow suffixes.
The L
prefix before a character literal makes it a wide character of type wchar_t
. Likewise since C11 u
and U
prefixes make it wide characters of type char16_t
and char32_t
, respectively.
When intending to represent certain special characters, such as a character that is non-printing, escape sequences are used. Escape sequences use a sequence of characters that are translated into another character. All escape sequences consist of two or more characters, the first of which is a backslash \\\\
. The characters immediately following the backslash determine what character literal the sequence is interpreted as.
Escape Sequence | Represented Character |
————— | ——————— |\\b
| Backspace |\\f
| Form feed |\\n
| Line feed (new line) |\\r
| Carriage return |\\t
| Horizontal tab |\\v
| Vertical tab |\\\\
| Backslash |\\'
| Single quotation mark |\\"
| Double quotation mark |\\?
| Question mark |\\nnn
| Octal value |\\xnn
… | Hexadecimal value |
Escape Sequence | Represented Character |
————— | ——————— |\\a
| Alert (beep, bell) |
Escape Sequence | Represented Character |
————— | ———————— |\\unnnn
| Universal character name |\\Unnnnnnnn
| Universal character name |
A universal character name is a Unicode code point. A universal character name may map to more than one character. The digits n
are interpreted as hexadecimal digits. Depending on the UTF encoding in use, a universal character name sequence may result in a code point that consists of multiple characters, instead of a single normal char
character.
When using the line feed escape sequence in text mode I/O, it is converted to the OS-specific newline byte or byte sequence.
The question mark escape sequence is used to avoid trigraphs. For example, ??/
is compiled as the trigraph representing a backslash character '\\'
, but using ?\\?/
would result in the string "??/"
.
There may be one, two or three octal numerals n
in the octal value escape sequence.