Character combinations consisting of a backslash (\) followed by a letter or by a combination of digits are called "escape sequences." To represent a newline character, single quotation mark, or certain other characters in a character constant, you must use escape sequences. An escape sequence is regarded as a single character and is therefore valid as a character constant.
Escape sequences are typically used to specify actions such as carriage returns and tab movements on terminals and printers. They are also used to provide literal representations of nonprinting characters and characters that usually have special meanings, such as the double quotation mark ("). The following table lists the ANSI escape sequences and what they represent.
Note that the question mark preceded by a backslash (\?) specifies a literal question mark in cases where the character sequence would be misinterpreted as a trigraph. See Trigraphs for more information.
|\'||Single quotation mark|
|\"||Double quotation mark|
|\?||Literal question mark|
|\ ooo||ASCII character in octal notation|
|\x hh||ASCII character in hexadecimal notation|
|\x hhhh||Unicode character in hexadecimal notation if this escape sequence is used in a wide-character constant or a Unicode string literal.
If a backslash precedes a character that does not appear in the table, the compiler handles the undefined character as the character itself. For example,
\c is treated as an
END Microsoft Specific
Escape sequences allow you to send nongraphic control characters to a display device. For example, the ESC character (\033) is often used as the first character of a control command for a terminal or printer. Some escape sequences are device-specific. For instance, the vertical tab and form feed escape sequences (\v and \f) do not affect screen output, but they do perform appropriate printer operations.
You can also use the backslash (\) as a continuation character. When a newline character (equivalent to pressing the RETURN key) immediately follows the backslash, the compiler ignores the backslash and the newline character and treats the next line as part of the previous line. This is useful primarily for preprocessor definitions longer than a single line. For example:
#define assert(exp) \ ( (exp) ? (void) 0:_assert( #exp, __FILE__, __LINE__ ) )