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 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
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 char
und 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 short
zu 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 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. Und werden jedoch long double
double
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
, 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 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 signed
Größenmodifizierer , unsigned
oder 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
, __int32
und __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.