Integrierte Typen (C++)

Integrierte Typen (auch als grundlegende Typen bezeichnet) werden vom C++-Sprachstandard angegeben und in den Compiler integriert. Integrierte Typen werden in keiner Headerdatei definiert. Integrierte Typen sind in drei Standard Kategorien unterteilt: integral, Gleitkomma und Void. Integrale Typen stellen ganze Zahlen dar. Gleitkommatypen können Werte angeben, die Bruchteile aufweisen können. Die meisten integrierten Typen werden vom Compiler als unterschiedliche Typen behandelt. Einige Typen sind jedoch Synonyme oder werden vom Compiler als gleichwertige Typen behandelt.

void-Typ

Der void Typ beschreibt einen leeren Satz von Werten. Es kann keine Variable vom Typ void angegeben werden. Der void Typ wird hauptsächlich verwendet, um Funktionen zu deklarieren, die keine Werte zurückgeben, oder um generische Zeiger auf nicht typisierte oder willkürlich typisierte Daten zu deklarieren. Jeder Ausdruck kann explizit konvertiert oder in den Typ voidumgewandelt werden. Allerdings werden solche Ausdrücke auf folgende Anwendungsbereiche begrenzt:

  • Eine Ausdrucksanweisung. (Weitere Informationen finden Sie unter Ausdrücke.)

  • Der linke Operand des Komma-Operators. (Weitere Informationen finden Sie unter Kommaoperator.)

  • Der zweite oder dritte Operand des bedingten Operators (? :). (Weitere Informationen finden Sie unter Ausdrücke mit dem bedingten Operator.)

std::nullptr_t

Die Schlüsselwort (keyword) nullptr ist eine NULL-Zeigerkonstante vom Typ std::nullptr_t, die in einen beliebigen unformatierten Zeigertyp konvertiert werden kann. Weitere Informationen finden Sie unter nullptr.

Boolescher Typ

Der bool Typ kann Werte true und aufweisen false. Die Größe des Typs bool ist implementierungsspezifisch. Details zur Microsoft-spezifischen Implementierung finden Sie unter Größen integrierter Typen .

Zeichentypen

Der char Typ ist ein Zeichendarstellungstyp, der Member des grundlegenden Ausführungszeichensatzes effizient codiert. Der C++-Compiler behandelt Variablen des Typs char, signed charund unsigned char , als würde es sich um unterschiedliche Typen handeln.

Microsoft-spezifisch: Variablen des Typs char werden standardmäßig wie vom Typ signed char heraufgestuftint, es sei denn, die /J Kompilierungsoption wird verwendet. In diesem Fall werden sie als Typ unsigned char behandelt und ohne Vorzeichenerweiterung zu int heraufgestuft.

Eine Variable vom Typ wchar_t ist ein Breitzeichen- oder Multibytezeichentyp. Verwenden Sie das L Präfix vor einem Zeichen- oder Zeichenfolgenliteral, um den Breitzeichentyp anzugeben.

Microsoft-spezifisch: Standardmäßig wchar_t ist ein nativer Typ, aber Sie können verwenden/Zc:wchar_t-, um eine Typedef für unsigned shortzu erstellenwchar_t. Der Typ __wchar_t ist ein Microsoft-spezifisches Synonym für den systemeigenen Typ wchar_t .

Der char8_t Typ wird für die UTF-8-Zeichendarstellung verwendet. Es hat die gleiche Darstellung wie unsigned char, wird aber vom Compiler als eindeutiger Typ behandelt. Der char8_t Typ ist neu in C++20. Microsoft-spezifisch: Die Verwendung von char8_t erfordert die /std:c++20 Compileroption oder höher (z /std:c++latest. B. ).

Der char16_t Typ wird für die UTF-16-Zeichendarstellung verwendet. Sie muss groß genug sein, um eine BELIEBIGE UTF-16-Codeeinheit darzustellen. Er wird vom Compiler als eindeutiger Typ behandelt.

Der char32_t Typ wird für die UTF-32-Zeichendarstellung verwendet. Sie muss groß genug sein, um eine UTF-32-Codeeinheit darzustellen. Er wird vom Compiler als eindeutiger Typ behandelt.

Gleitkommatypen

Gleitkommatypen verwenden eine IEEE-754-Darstellung, um eine Näherung von Bruchwerten über einen großen Bereich von Größen bereitzustellen. In der folgenden Tabelle sind die Gleitkommatypen in C++ und die vergleichenden Einschränkungen für Gleitkommatypgrößen aufgeführt. Diese Einschränkungen werden durch den C++-Standard vorgeschrieben und sind unabhängig von der Microsoft-Implementierung. Die absolute Größe integrierter Gleitkommatypen ist im Standard nicht angegeben.

Typ Inhalte
float Type float ist der kleinste Gleitkommatyp in C++.
double Der Typ double ist ein Gleitkommatyp, der größer oder gleich dem Typ float, aber kleiner oder gleich der Größe des Typs long doubleist.
long double Der Typ long double ist ein Gleitkommatyp, der größer als der oder gleich dem Typ doubleist.

Microsoft-spezifisch: Die Darstellung von long double und double ist identisch. Und werden jedoch long doubledouble vom Compiler als unterschiedliche Typen behandelt. Der Microsoft C++-Compiler verwendet die 4- und 8-Byte IEEE-754-Gleitkommadarstellungen. Weitere Informationen finden Sie unter IEEE-Gleitkommadarstellung.

Ganzzahltypen

Der int Typ ist der standardmäßige ganzzahlige Standardtyp. Sie kann alle ganzen Zahlen über einen implementierungsspezifischen Bereich darstellen.

Eine ganze Zahl mit Vorzeichen ist eine Darstellung, die sowohl positive als auch negative Werte enthalten kann. Sie wird standardmäßig verwendet, oder wenn der signed Modifizierer Schlüsselwort (keyword) vorhanden ist. Der unsigned Modifizierer Schlüsselwort (keyword) gibt eine Darstellung ohne Vorzeichen an, die nur nicht negative Werte enthalten kann.

Ein Größenmodifizierer gibt die Breite der verwendeten Ganzzahldarstellung in Bits an. Die Sprache unterstützt short, longund long long Modifizierer. Ein short Typ muss mindestens 16 Bit breit sein. Ein long Typ muss mindestens 32 Bit breit sein. Ein long long Typ muss mindestens 64 Bit breit sein. Der Standard gibt eine Größenbeziehung zwischen den integralen Typen an:

1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)

Eine Implementierung muss sowohl die Mindestgrößenanforderungen als auch die Größenbeziehung für jeden Typ beibehalten. Die tatsächlichen Größen können jedoch je nach Implementierung variieren. Details zur Microsoft-spezifischen Implementierung finden Sie unter Größen integrierter Typen .

Die int Schlüsselwort (keyword) kann weggelassen werden, wenn signedGrößenmodifizierer , unsignedoder angegeben werden. Die Modifizierer und int der Typ, falls vorhanden, können in beliebiger Reihenfolge angezeigt werden. Beispiel: short unsigned und unsigned int short verweisen auf denselben Typ.

Synonyme für ganzzahlige Typen

Die folgenden Gruppen von Typen werden vom Compiler als Synonyme betrachtet:

  • short, short int, signed short, signed short int

  • unsigned short, unsigned short int

  • int, signed, signed int

  • unsigned, unsigned int

  • long, long int, signed long, signed long int

  • unsigned long, unsigned long int

  • long long, long long int, signed long long, signed long long int

  • unsigned long long, unsigned long long int

Microsoft-spezifische Ganzzahltypen umfassen die Typen mit bestimmter Breite __int8, __int16, __int32und __int64 . Diese Typen können die signed Modifizierer und unsigned verwenden. Der Datentyp __int8 entspricht dem Typ char, __int16 dem Typ short, __int32 dem Typ int und __int64 dem Typ long long.

Größen von integrierten Typen

Die meisten integrierten Typen verfügen über implementierungsdefinierte Größen. In der folgenden Tabelle ist die Menge an Speicher aufgeführt, die für integrierte Typen in Microsoft C++ erforderlich ist. Insbesondere long ist 4 Bytes sogar auf 64-Bit-Betriebssystemen.

type Size
bool, char, char8_t, unsigned char, signed char, __int8 1 Byte
char16_t, __int16, short, unsigned short, wchar_t, __wchar_t 2 Bytes
char32_t, float, __int32, int, unsigned int, long, unsigned long 4 Byte
double, __int64, long double, long long, unsigned long long 8 Byte

Eine Zusammenfassung des Wertebereichs der einzelnen Typen finden Sie unter Datentypbereiche .

Weitere Informationen zur Typkonvertierung finden Sie unter Standardkonvertierungen.

Weitere Informationen

Datentypbereiche