C++ Variablentypen
Variablen sind eigentlich nur Namen für die Speicherbereiche, auf denen ein Programm arbeiten kann.
In C++ gibt es verschiedene Variablentypen, die zum Speichern unterschiedlicher Datenarten verwendet werden können.
In C++ hat jede Variable einen festgelegten Typ. Der Typ bestimmt die Größe und das Layout des Speichers der Variable, den Bereich der Werte, die im Speicher gespeichert werden können, und die Operatoren, die auf die Variable angewendet werden können.
Variablennamen können aus Buchstaben, Ziffern und dem Unterstrich bestehen. Sie müssen mit einem Buchstaben oder einem Unterstrich beginnen.
Groß- und Kleinbuchstaben sind verschieden, da C++ zwischen Groß- und Kleinschreibung unterscheidet.
Basierend auf den im vorherigen Kapitel erläuterten Basistypen gibt es die folgenden grundlegenden Variablentypen, die im nächsten Kapitel erläutert werden:
| Type | Beschreibung |
|---|---|
| bool | Boolescher Typ, speichert den Wert true oder false und belegt 1 Byte. |
| char | Zeichentyp, wird zum Speichern von ASCII-Zeichen verwendet und belegt normalerweise 1 Byte. |
| int | Ganzzahltyp, wird normalerweise zum Speichern gewöhnlicher Ganzzahlen verwendet und belegt typischerweise 4 Byte. |
| float | Gleitkommawert mit einfacher Genauigkeit, wird zum Speichern von Gleitkommazahlen mit einfacher Genauigkeit verwendet. Einfache Genauigkeit hat das Format: 1 Vorzeichenbit, 8 Exponentenbits, 23 Mantissenbits, belegt normalerweise 4 Bytes.
|
| double | Gleitkommawert mit doppelter Genauigkeit, wird zum Speichern von Gleitkommazahlen mit doppelter Genauigkeit verwendet. Doppelte Genauigkeit hat 1 Vorzeichenbit, 11 Exponentenbits, 52 Mantissenbits, belegt normalerweise 8 Bytes.
|
| void | Repräsentiert das Fehlen eines Typs. |
| wchar_t | Breitzeichen-Typ, wird zum Speichern eines breiteren Bereichs von Zeichen verwendet, belegt normalerweise 2 oder 4 Bytes. |
C++ erlaubt auch das Definieren von Variablen verschiedener anderer Typen, wie z. B.Aufzählungen, Zeiger, Arrays, Referenzen, Datenstrukturen, Klassenusw., die in späteren Kapiteln erklärt werden.
Ganzzahltypen:
int: Wird zur Darstellung von Ganzzahlen verwendet, belegt normalerweise 4 Bytes.short: Wird zur Darstellung von kurzen Ganzzahlen verwendet, belegt normalerweise 2 Bytes.long: Wird zur Darstellung von langen Ganzzahlen verwendet, belegt normalerweise 4 Bytes.long long: Wird zur Darstellung von längeren Ganzzahlen verwendet, belegt normalerweise 8 Bytes.
Gleitkommatypen:
float: Wird zur Darstellung von Gleitkommazahlen mit einfacher Genauigkeit verwendet, belegt normalerweise 4 Bytes.double: Wird zur Darstellung von Gleitkommazahlen mit doppelter Genauigkeit verwendet und belegt normalerweise 8 Bytes.long double: Wird zur Darstellung von Gleitkommazahlen mit höherer Genauigkeit verwendet; die Anzahl der belegten Bytes kann je nach Implementierung variieren.
Zeichentypen:
char: Wird zur Darstellung von Zeichen verwendet und belegt normalerweise 1 Byte.wchar_t: Wird zur Darstellung von breiten Zeichen verwendet und belegt normalerweise 2 oder 4 Bytes.char16_t: Wird zur Darstellung von 16-Bit-Unicode-Zeichen verwendet und belegt 2 Bytes.char32_t: Wird zur Darstellung von 32-Bit-Unicode-Zeichen verwendet und belegt 4 Bytes.
Boolescher Typ:
boolWird zur Darstellung boolescher Werte verwendet, kann nur annehmentrueoderfalse。
Aufzählungstypen:
enum: Wird verwendet, um eine Menge benannter ganzzahliger Konstanten zu definieren.
Zeigertypen:
type*Wird verwendet, um Zeiger auf den Typ darzustellentypeZeiger auf das Objekt.
Array-Typen:
type[]odertype[size]: Dient zum Definieren eines Arrays, das aus Elementen desselben Typs besteht.
Strukturtypen:
struct: Dient zum Definieren einer Struktur, die mehrere Mitglieder unterschiedlicher Typen enthält.
Klassentypen:
class: Dient zum Definieren eines benutzerdefinierten Typs mit Attributen und Methoden.
Union-Typen:
union: Dient zum Definieren eines speziellen Datentyps, der verschiedene Datentypen an derselben Speicherstelle speichern kann.
In C++ hängt die Länge eines Typs (d. h. die Anzahl der Bytes, die er belegt) vom Compiler und der Computerarchitektur ab. Der C++-Standard legt jedoch die Mindestbereiche für verschiedene Ganzzahltypen fest und nicht konkrete Byteanzahlen, um sicherzustellen, dass Code auf verschiedenen Systemen korrekt ausgeführt wird.
Bitte beachten Sie, dass die Wertebereiche der oben genannten Typen nur die vom C++-Standard festgelegten Mindestanforderungen sind. In der Praxis können diese Typen auf vielen Systemen mehr Bytes belegen. Beispielsweise belegt auf vielen modernen Computern int normalerweise 4 Bytes, während long 8 Bytes belegen kann.
Als Nächstes erklären wir, wie man Variablen verschiedener Typen definiert, deklariert und verwendet.
Variablendefinition in C++
Eine Variablendefinition teilt dem Compiler mit, wo und wie Speicher für die Variable erstellt werden soll.

Eine Variablendefinition gibt einen Datentyp an und enthält eine Liste mit einer oder mehreren Variablen dieses Typs, wie unten gezeigt:
type variable_list;
Hier musstypeein gültiger C++-Datentyp sein, der char, wchar_t, int, float, double, bool oder ein beliebiges benutzerdefiniertes Objekt sein kann;variable_listkann aus einem oder mehreren Bezeichnernamen bestehen, wobei mehrere Bezeichner durch Kommas getrennt werden. Mehrere gültige Deklarationen sind unten aufgeführt:
lineint i, j, k;deklarieren und definieren die Variablen i, j und k, die den Compiler anweisen, Variablen mit den Namen i, j, k vom Typ int zu erstellen.
Variablen können zum Zeitpunkt der Deklaration initialisiert werden (mit einem Anfangswert versehen). Ein Initialisierer besteht aus einem Gleichheitszeichen, gefolgt von einem konstanten Ausdruck, wie unten gezeigt:
Hier sind einige Beispiele:
Definitionen ohne Initialisierung: Variablen mit statischer Speicherdauer werden implizit mit NULL initialisiert (alle Bytewerte sind 0), während die Anfangswerte aller anderen Variablen undefiniert sind.
Variablendeklaration in C++
Eine Variablendeklaration versichert dem Compiler, dass die Variable mit dem angegebenen Typ und Namen existiert, sodass der Compiler die Kompilierung fortsetzen kann, ohne die vollständigen Details der Variable zu benötigen. Eine Variablendeklaration ist nur zur Kompilierungszeit sinnvoll; zur Linkzeit des Programms benötigt der Compiler die tatsächliche Variablendefinition.
Wenn Sie mehrere Dateien verwenden und eine Variable in nur einer davon definieren (die Datei, die die Variable definiert, ist zur Linkzeit des Programms verfügbar), werden Variablendeklarationen sehr nützlich. Sie können das Schlüsselwortexternverwenden, um eine Variable an beliebiger Stelle zu deklarieren. Obwohl Sie eine Variable in einem C++-Programm mehrmals deklarieren können, kann eine Variable in einer Datei, Funktion oder einem Codeblock nur einmal definiert werden.
Beispiel
Probieren Sie das folgende Beispiel aus, bei dem die Variablen oben deklariert, aber innerhalb der main-Funktion definiert und initialisiert werden:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
30 23.3333
Ähnlich geben Sie beim Deklarieren einer Funktion einen Funktionsnamen an, während die eigentliche Definition der Funktion an beliebiger Stelle stehen kann. Zum Beispiel:
Lvalues und Rvalues in C++
In C++ gibt es zwei Arten von Ausdrücken:
- lvalue:Ein Ausdruck, der auf eine Speicherstelle verweist, wird als lvalue-Ausdruck bezeichnet. Ein lvalue kann auf der linken oder rechten Seite des Zuweisungsoperators stehen.
- rvalue:Der Begriff rvalue bezieht sich auf einen Wert, der an einer bestimmten Adresse im Speicher abgelegt ist. Ein rvalue ist ein Ausdruck, dem kein Wert zugewiesen werden kann; das heißt, ein rvalue kann auf der rechten Seite des Zuweisungsoperators stehen, aber nicht auf der linken Seite.
Variablen sind lvalues, daher können sie auf der linken Seite des Zuweisungsoperators stehen. Numerische Literale sind rvalues, daher kann ihnen kein Wert zugewiesen werden, und sie können nicht auf der linken Seite des Zuweisungsoperators stehen. Das Folgende ist eine gültige Anweisung:
int g = 20;
Das Folgende ist jedoch keine gültige Anweisung und erzeugt einen Kompilierzeitfehler:
10 = 20;Weitere Erweiterungen

