Escape-Sequenzen
Escape-Sequenzen werden verwendet, um bestimmte Sonderzeichen in Zeichenkettenliteralen und Zeichenkonstanten darzustellen.
Die folgenden Escape-Sequenzen sind verfügbar. ISO C erfordert eine Diagnose, wenn auf den Backslash ein nicht hier aufgeführter Buchstabe folgt.
| Escape Sequenz |
Beschreibung | Darstellung |
|---|---|---|
| Einfache Escape-Sequenzen | ||
\'
|
einfaches Anführungszeichen | Byte 0x27 in ASCII-Kodierung |
\"
|
doppeltes Anführungszeichen | Byte 0x22 in ASCII-Kodierung |
\?
|
Fragezeichen | Byte 0x3f in ASCII-Kodierung |
\\
|
Backslash | Byte 0x5c in ASCII-Kodierung |
\a
|
akustischer Signalton | Byte 0x07 in ASCII-Kodierung |
\b
|
Rücktaste | Byte 0x08 in ASCII-Kodierung |
\f
|
Seitenvorschub - neue Seite | Byte 0x0c in ASCII-Kodierung |
\n
|
Zeilenvorschub - neue Zeile | Byte 0x0a in ASCII-Kodierung |
\r
|
Wagenrücklauf | Byte 0x0d in ASCII-Kodierung |
\t
|
Horizontaler Tabulator | Byte 0x09 in ASCII-Kodierung |
\v
|
Vertikaler Tabulator | Byte 0x0b in ASCII-Kodierung |
| Numerische Escape-Sequenzen | ||
\nnn
|
beliebiger Oktalwert | Code-Einheit nnn |
\xn...
|
beliebiger Hexadezimalwert | Code-Einheit n... (beliebige Anzahl von Hexadezimalziffern) |
| Universelle Zeichenbezeichner | ||
\unnnn (seit C99) |
Unicode-Wert im zulässigen Bereich; kann zu mehreren Code-Einheiten führen |
Code-Punkt U+nnnn |
\Unnnnnnnn (seit C99) |
Unicode-Wert im zulässigen Bereich; kann zu mehreren Code-Einheiten führen |
Code-Punkt U+nnnnnnnn |
Bereich der universellen ZeichenbezeichnerWenn ein universeller Zeichenbezeichner einem Code-Punkt entspricht, der nicht |
(seit C99) |
[bearbeiten] Anmerkungen
\0 ist die am häufigsten verwendete Oktal-Escape-Sequenz, da sie das terminierende Nullzeichen in null-terminierten Zeichenketten darstellt.
Das Zeilenumbruchzeichen \n hat eine besondere Bedeutung bei der Verwendung in Textmodus-E/A: Es wird in das betriebssystemspezifische Zeilenumbruchbyte oder die Byte-Sequenz umgewandelt.
Oktale Escape-Sequenzen haben eine Längenbeschränkung von drei Oktalziffern, enden jedoch beim ersten Zeichen, das keine gültige Oktalziffer ist, wenn es früher angetroffen wird.
Hexadezimale Escape-Sequenzen haben keine Längenbeschränkung und enden beim ersten Zeichen, das keine gültige Hexadezimalziffer ist. Wenn der von einer einzelnen hexadezimalen Escape-Sequenz dargestellte Wert nicht in den Wertebereich des für diese Zeichenkette oder Zeichenkonstante verwendeten Zeichentyps passt (char, char8_t(seit C23), char16_t, char32_t(seit C11) oder wchar_t), ist das Ergebnis undefiniert.
|
Ein universeller Zeichenbezeichner in einem schmalen Zeichenkettenliteral oder einem 16-Bit-Zeichenkettenliteral(seit C11) kann mehr als einer Code-Einheit entsprechen, z. B. ist \U0001f34c 4 char-Code-Einheiten in UTF-8 (\xF0\x9F\x8D\x8C)und 2 char16_t-Code-Einheiten in UTF-16 (\xD83C\xDF4C)(seit C11). |
(seit C99) |
|
Ein universeller Zeichenbezeichner, der einem Code-Punkt größer als |
(seit C99) (bis C23) |
|
Die Fragezeichen-Escape-Sequenz \? wird verwendet, um zu verhindern, dass Trigraphen innerhalb von Zeichenkettenliteralen interpretiert werden: Eine Zeichenkette wie "??/" wird als "\" kompiliert, aber wenn das zweite Fragezeichen maskiert wird, wie in "?\?/", wird daraus "??/". |
(bis C23) |
[bearbeiten] Beispiel
#include <stdio.h> int main(void) { printf("This\nis\na\ntest\n\nShe said, \"How are you?\"\n"); }
Ausgabe
This is a test She said, "How are you?"
[bearbeiten] Referenzen
- C17-Standard (ISO/IEC 9899:2018)
- 5.2.2 Zeichenanzeigesemantik (S. 18-19)
- 6.4.3 Universelle Zeichenbezeichner (S. 44)
- 6.4.4.4 Zeichenkonstanten (S. 48-50)
- C11-Standard (ISO/IEC 9899:2011)
- 5.2.2 Zeichenanzeigesemantik (S. 24-25)
- 6.4.3 Universelle Zeichenbezeichner (S. 61)
- 6.4.4.4 Zeichenkonstanten (S. 67-70)
- C99-Standard (ISO/IEC 9899:1999)
- 5.2.2 Zeichenanzeigesemantik (S. 19-20)
- 6.4.3 Universelle Zeichenbezeichner (S. 53)
- 6.4.4.4 Zeichenkonstanten (S. 59-61)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 2.2.2 Zeichenanzeigesemantik
- 3.1.3.4 Zeichenkonstanten
[bearbeiten] Siehe auch
| C++ Dokumentation für Escape-Sequenzen
|