character is not an octal digit. For example, is a single octal escape sequence denoting a byte with numerical value 9 (11 in octal), rather than the escape sequence followed by the digit . However, is the octal escape sequence followed by the digit . In order to denote the byte with numerical value 1, followed by the digit , one could use , since C automatically concatenates adjacent string literals. Note that some three-digit octal escape sequences may be too large to fit in a single byte; this results in an implementation-defined value for the byte actually produced. The escape sequence is a commonly used octal escape sequence, which denotes the null character, with value zero. Non-standard escape sequences A sequence such as is not a valid escape sequence according to the C standard as it is not found in the table above. The C standard requires such "invalid" escape sequences to be diagnosed (i.e., the compiler must print an error message). Notwithstanding this fact, some compilers may define additional escape sequences, with implementation-defined semantics. An example is the escape sequence, which has 1B as the hexadecimal value in ASCII, represents the escape character, and is supported in GCC, clang and tcc. It wasn't however added to the C standard repertoire, because it has no meaningful equivalent in some character sets (such as EBCDIC). Universal character names From the C99 standard, C has also supported escape sequences that denote Unicode code points in string literals. Such escape sequences are called universal character names, and have the form or , where stands for a hex digit. Unlike the other escape sequences considered, a universal character name may expand into more than one code unit. The sequence denotes the code point , interpreted as a hexadecimal number. The sequence denotes the code point , interpreted as a hexadecimal number. (Therefore, code points located at U+10000 or higher must be denoted with the syntax, whereas lower code points may use or .) The code point is converted into a sequence of code units in the encoding of the destination type on the target system. For example (where the encoding is UTF-8, and UTF-16 for ): char s1[] = "\xC0"; // A single byte with the value 0xC0, not valid UTF-8 char s2[] = "\u00C0"; // Two bytes with values 0xC3, 0x80, the UTF-8 encoding of U+00C0 wchar_t s3[] = L"\xC0"; // A