Datentypen in C++

C++ kennt folgende Datentypen:

Name Typ Größe in Bytes
char Charakter Zeichen
signed: -128 – 127
unsigned: 0 – 255
1 Byte, meistens.
wchar_t Wide Charakter Zeichen. 2 oder 4 Byte
short Ganzzahl, Integer
signed: -32768 – 32767
unsigned: 0 – 65535
2 Bytes
int Ganzzahl, Integer
signed: -2147483648 – 2147483647*
unsigned: 0 – 4294967295*
*bei sizeof(int) == 4 Bytes
i.d.R. 32 oder 64 Bit (4/8 Bytes), meistens Plattformgröße
long (long int) Ganzzahl
signed: -2147483648 – 2147483647
unsigned: 0 – 4294967295
32 bit bzw. 4 Bytes
float Kommazahl
3.4e +/- 38 (~7 Stellen)
4 Bytes
double Kommazahl
+/- 1.7e +/- 308 (~15 Stellen)
8 Bytes
long double Kommazahl
+/- 1.7e +/- 308 (~15 Stellen)
8 Bytes
bool Boolscher Wahrheitswert
true oder false.

1 Byte





























Diese Datentypen sind ohne Einbindung von Headern defaultmäßig in C++ bekannt,  ihr Name ist auch ein Schlüsselwort. Mittels signed oder unsigned lassen sich die Wertebereiche der Datentypen anpassen. Standard ist unsigned, also nur positive Werte in einem numerischen Datentypen. Ebenfalls noch erwähnenswert ist size_t, ein numerischer, unsigned Datentyp für Größenangaben.
Die STL enthält viele weitere Datentypen, welche ebenfalls vom Standard definiert werden. So gibt es mit std::string und std::wstring zwei Klassen für das Handling mit Strings. Ebenso enthält die STL Containerklassen wie std::vector<T> oder std::list<T>, diese eignen sich für das anlegen von Listen diverser Typen.

Mit dem Schlüsselwort sizeof kann man die Größe eines Typen in Bytes ermitteln. Mittels typedef lassen sich auch beliebige Aliase für Typen in C++ erstellen:

typedef int zahlentyp;
zahlentyp i =0;


"zahlentyp" ist hierbei ein Alias für int. Man kann natürlich auch gleich int i =0 schreiben, typedefs eignen sich aber auch für komplexere Typen und Templates, mehr dazu später.

C++ kennt genau wie C, einfache zusammengesetzte Typen. In C heißen sie structs, und in C++ ist dies auch so. Wobei hier ein struct eigentlich eine Klasse ist, welche auch Methoden und anderes haben kann, für den Anfang ignorieren wir dies aber mal.

Ein einfaches Beispiel:

struct Ware
{
    std::string name;
    int anzahl;
    float preis;
};


Das struct Ware enthält die 3 Membervariablen name, anzahl und preis. Mittels "Ware artikel;" lässt sich eine Instanz von Ware anlegen, welche über den Variablennamen artikel ansprechbar ist. Dieser Datentyp könnte zum Beispiel in einer Lagerverwaltung Verwendung finden.