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 Hauptkategorien 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 void
umgewandelt 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
Das Schlüsselwort 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 char
und unsigned char
, als würde es sich um unterschiedliche Typen handeln.
Microsoft-spezifische: Variablen vom Typ werden standardmäßig als int
vom Typ char
signed 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.
type | Contents |
---|---|
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 double ist. |
long double |
Der Typ long double ist ein Gleitkommatyp, der größer als der oder gleich dem Typ double ist. |
Microsoft-spezifisch: Die Darstellung von long double
und double
ist identisch. long double
double
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 das signed
Zusatzwort vorhanden ist. Das unsigned
Schlüsselwort des Modifizierers 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
, long
und 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 zwischen Implementierungen variieren. Siehe Größen integrierter Typen für Microsoft-spezifische Implementierungsdetails.
Das int
Schlüsselwort kann weggelassen werden, wenn signed
, unsigned
oder Größenmodifizierer angegeben werden. Die Modifizierer und int
-typen können in beliebiger Reihenfolge angezeigt werden. Beispiel: short unsigned
unsigned 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
, __int32
und __int64
Typen. Diese Typen können die signed
unsigned
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.
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 Bytes |
double , , __int64 long double , , long long unsigned long long |
8 Bytes |
Eine Zusammenfassung des Wertebereichs der einzelnen Typen finden Sie unter "Datentypbereiche ".
Weitere Informationen zur Typkonvertierung finden Sie unter Standardkonvertierungen.