Integrierte Typen (C++)

Integrierte Typen (auch als grundlegende Typen bezeichnet) werden durch den 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 Leerzeichen. Integrale Typen stellen ganze Zahlen dar. Gleitkommatypen können Werte angeben, die Bruchteile enthalten 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 Wertesatz. 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 generische Zeiger auf nicht typisierte oder willkürlich eingegebene Daten 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 Nullzeigerkonstante vom Typ std::nullptr_t, die in einen beliebigen unformatierten Zeigertyp umsetzbar ist. Weitere Informationen finden Sie unter nullptr.

Boolescher Typ

Der bool Typ kann Werte true und false. Die Größe des bool Typs ist implementierungsspezifisch. Siehe Größen integrierter Typen für Microsoft-spezifische Implementierungsdetails.

Zeichentypen

Der char Typ ist ein Zeichendarstellungstyp, der Elemente 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-spezifische: Variablen vom Typ werden standardmäßig als int vom Typ charsigned char heraufgestuft, es sei denn, die /J Kompilierungsoption wird verwendet. In diesem Fall werden sie als Typ unsigned char behandelt und ohne Signierungserweiterung heraufgestuft int .

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

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

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

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

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

Gleitkommatypen

Gleitkommatypen verwenden eine IEEE-754-Darstellung, um eine Annäherung von Bruchwerten über einen breiten Bereich von Größenordnungen bereitzustellen. In der folgenden Tabelle sind die Gleitkommatypen in C++ und die vergleichenden Einschränkungen für Gleitkommatypen aufgeführt. Diese Einschränkungen werden vom C++-Standard vorgeschrieben und sind unabhängig von der Microsoft-Implementierung. Die absolute Größe der integrierten Gleitkommatypen wird nicht im Standard angegeben.

Typ Inhalte
float Typ 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. long doubledouble Sie werden jedoch 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 Zahlen über einen implementierungsspezifischen Bereich darstellen.

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

Ein Größenmodifizierer gibt die Breite in Bits der verwendeten ganzzahligen Darstellung 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 Standard enthalten. Die tatsächlichen Größen können jedoch zwischen Implementierungen variieren. Siehe Größen integrierter Typen für Microsoft-spezifische Implementierungsdetails.

Die int Schlüsselwort (keyword) können weggelassen werden, wenn signed, unsignedoder Größenmodifizierer angegeben werden. Die Modifizierer und int -typen können in beliebiger Reihenfolge angezeigt werden. Beispiel: short unsignedunsigned int short Verweisen sie auf denselben Typ.

Synonyme für ganzzahlige Typen

Die folgenden Typengruppen 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 ganzzahlige Typen umfassen die spezifische Breite __int8, , __int16, __int32und __int64 Typen. Diese Typen können die signedunsigned Modifizierer und Modifizierer verwenden. Der Datentyp __int8 entspricht dem Typ char, __int16 dem Typ short, __int32 dem Typ int und __int64 dem Typ long long.

Größen integrierter Typen

Die meisten integrierten Typen weisen implementierungsdefinierte Größen auf. In der folgenden Tabelle ist die Menge an Speicherplatz aufgeführt, der für integrierte Typen in Microsoft C++ erforderlich ist. Insbesondere long beträgt 4 Byte sogar auf 64-Bit-Betriebssystemen.

Typ 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.

Siehe auch

Datentypbereiche