Datentypen

C++ bietet viele eingebaute Datentypen als auch Möglichkeiten Datentypen selbst zu definieren.

In C++ gibt es prinzipiell 7 grundlegende Datentypen:

In der Standard Template Library (STL) ⇒ Standardbibliothek sind dann noch weitere Datentypen enthalten, wie z.B.:

Wahrheitswerte - bool

Der Datentyp für Wahrheitswerte heißt in C++ bool, was eine Abkürzung für boolean ist. Er kann nur zwei Zustände annehmen: true (wahr) oder false (falsch). Obwohl eigentlich 1 Bit ausreichen würde, hat bool mindestens eine Größe von einem Byte (also 8 Bit), denn 1 Byte ist die kleinste adressierbare Einheit und somit die Minimalgröße für jeden Datentyp.

bool betrunken=false;

Zeichen - char

Zeichen sind eigentlich Ganzzahlen. Sie unterscheiden sich von diesen nur bezüglich der Ein- und Ausgabe. Jeder Zahl ist ein Zeichen zugeordnet. Mit den Zahlen lässt sich ganz normal rechnen aber bei der Ausgabe erscheint das zugeordnete Zeichen auf dem Bildschirm. Welches Zeichen welcher Zahl entspricht, wird durch den verwendeten Zeichensatz festgelegt.

Die meisten Zeichensätze beinhalten den sogenannten ASCII-Code (American Standard Code for Information Interchange), welcher die Zeichen 0 – 127 belegt. Er enthält 32 Steuerzeichen (0 – 31) und 96 druckbare Zeichen (32 – 127).

char ist der Standard-Datentyp für Zeichen. Er ist in der Regel 1 Byte groß und kann somit 256 verschiedene Zeichen darstellen. Diese genügen für einen erweiterten ASCII-Code, welcher zum Beispiel auch deutsche Umlaute definiert. Für Unicode-Zeichen gibt es die Datentypen char16_t mit einer Größe von 2 Byte und char32_t mit einer Größe von 4 Byte. Früher nutzte man für Unicode auch den Datentyp wchar_t, welcher je nach System 2 oder 4 Byte groß war. Dieser Datentyp sollte jedoch nicht mehr eingesetzt werden.

Ganzzahlen - int

Dieser Datentyp umfasst sowohl ganzzahlige positive als auch negative Zahlen aus dem Wertebereich von -2.147.483.648 bis 2.147.483.647. Es werden also vom Compiler für eine Variable des Datentyps int 32 Bit (4 Byte) reserviert.

int x; // Variablendeklaration; die Variable x soll vom Typ int sein
x = 3; //Wertzuweisung, Initialisierung; die Variable x enthält den Wert 3

Fließkommazahlen

In der realen Welt sind ganzzahlige Werte oft nicht ausreichend.

Bei Gewichten, Geschwindigkeiten und anderen Werten aus der Physik ist immer mit Nachkommastellen zu rechnen. Dieser Tatsache kann sich auch eine Computersprache nicht entziehen. Eine solche Fließkommazahl besitzt zwei Komponenten.

Die eine ist die Mantisse, und die andere ist der Exponent zur Basis 10.

Der Exponent wird durch ein kleines oder großes E abgetrennt. Die Zahl 1.5E2 hat den Gegenwert von 150. Dabei ist 1.5 die Mantisse, 2 ist der Exponent.

float

Der einfachste Typ mit Nachkommastellen heißt float. Die Zahlen dieses Typs sind binär kodiert, damit sie effizient im Computer verarbeitet werden können. Die Zahl lässt ganzzahlige, aber auch negative Exponenten zu. Dadurch sind nicht nur extrem große Zahlen darstellbar, sondern auch sehr kleine Brüche. Die Speicheranforderung einer float-Variablen ist nicht sehr hoch, typischerweise liegt sie bei 4 Bytes.

float pi=3.14159265;

double

Reicht die Genauigkeit nicht aus oder werden Größenordnungen benötigt, die über die Kapazität einer float-Variablen hinausgehen, steht der Typ double zur Verfügung. Der Name bedeutet »doppelt« und bezieht sich auf die Genauigkeit. Diese ist doppelt so hoch wie bei float.

double pi=3.14159265;

Nichts - void

Der Datentyp void bedeutet nichts, ist kein echter Datentyp und wird überall dort verwendet, wo kein Wert benötigt wird oder vorhanden ist. Bei Funktionen wird void verwendet, wenn eine Funktion keinen Wert zurückgibt oder die Funktion keinen Parameter hat.

Aufzählungen - enum

Mit enum können Aufzählungstypen definiert werden. Dazu gehören Wochentage oder Farben. Den Elementen eines Aufzählungstyps werden Namen zugeordnet, obwohl sie intern natürlich als Zahlen codiert werden

enum Farbe {ROT, GELB, GRUEN, BLAU};

Zeichenketten - string

Die C++-Standardbibliothek enthält eine Klasse namens string. Um diese Klasse nutzen zu können, müssen Sie die gleichnamige Headerdatei string einbinden.

#include <iostream>  //Bibliothek für Ein- und Ausgabe-Befehle
#include <string>  // Bibliothek für Zeichenketten
 
using namespace std;
 
int main() {
    string zeichenkette;
    zeichenkette = "Hallo Welt!";
    cout << zeichenkette << endl;
}

Datentyp prüfen

Mit der Bibliothek <typeinfo> und dem Befehl typeid(Variable).name() kannst du dir den Datentyp jeder Variable anzeigen lassen.

#include <iostream>
#include <typeinfo>
 
using namespace std;
 
int main(int argc, char** argv) {
 
	float test = 3.3;
 
	cout << typeid(test).name();
 
 
	return 0;
}