Zeichenkonstanten

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Zeichenkonstanten (Übersicht) - Index

Eine Zeichenkonstante besteht aus einem oder mehreren in Apostrophen eingeschlossenen Zeichen, wie etwa 'A', '+' oder '\n'. In C haben einzelne Zeichenkonstanten den Datentyp int. In C++ hat eine Zeichenkonstante den Typ char. Multizeichenkonstanten haben in C und C++ den Datentyp int.

Weitere Informationen über Zeichenkonstanten finden Sie in den folgenden Themen: Die drei char-Typen|, Escape-Sequenzen, Wide-Character- und Mehr-Zeichenkonstanten, Unicode-Zeichentypen und Literale (C++11).

Größen von Zeichentypen in C und C++

Compilieren Sie folgenden Code für einen Vergleich der Zeichentypgrößen zuerst als C-Programm und dann als C++-Programm.

#include <stdio.h>
#define CH 'x'       /* A CHARACTER CONSTANT */
void main(void) {
  char ch = 'x';    /* A char VARIABLE      */
  printf("\nSizeof int     = %d", sizeof(int) );
  printf("\nSizeof char    = %d", sizeof(char) );
  printf("\nSizeof ch      = %d", sizeof(ch) );
  printf("\nSizeof CH      = %d", sizeof(CH) );
  printf("\nSizeof wchar_t = %d", sizeof(wchar_t) );
}

Hinweis: Größenangaben beziehen sich auf Bytes.

Größen von Zeichentypen in C und C++:

Ausgabe, wenn als C Programm compiliert Ausgabe, wenn als C++-Programm compiliert

Sizeof int = 4

Sizeof int = 4

Sizeof char = 1

Sizeof char = 1

Sizeof ch = 1

Sizeof ch = 1

Sizeof CH = 4

Sizeof CH = 1

Sizeof wchar_t = 2

Sizeof wchar_t = 2


Vier Zeichenliteraltypen in C++11

Per Vorgabe enthält ein Zeichenliteral in C++ ein ANSI-Zeichen mit dem Datentyp char . In C++ und C++11 können Sie mit dem Präfix L für ein Zeichenliteral festlegen, dass das Zeichenliteral ein Wide-Zeichen mit dem Datentyp wchar_t enthalten soll. In C++11 können Sie mit den Präfixen u und U für ein Zeichenliteral festlegen, dass das Zeichenliteral Unicode-Zeichen in der Codierung (Unicode-Zeichentypen und Literale (C++11)) UTF-16 (Datentyp char16_t) oder UTF-32 (Datentyp char32_t) enthalten soll.

Zum Beispiel können Sie in C++11-Programmen die folgenden Zeichenliterale verwenden:

  • 'A' - ANSI-Zeichen mit dem Datentyp char. Dieses Zeichenliteral weist ein Byte Arbeitsspeicher zu.
  • L'A' - Wide-Zeichen mit dem Datentyp wchar_t. Dieses Zeichenliteral weist zwei Byte Arbeitsspeicher zu.
  • u'A' - in UTF-16 codiertes Unicode-Zeichen mit dem Datentyp char16_t. Dieses Zeichenliteral weist zwei oder vier Byte Arbeitsspeicher zu (abhängig davon, ob dieses Zeichen zur Basic Multilingual Plane gehört).
  • U'A' - in UTF-32 codiertes Unicode-Zeichen mit dem Datentyp char32_t. Dieses Zeichenliteral weist vier Byte Arbeitsspeicher zu.

Siehe auch