Datentypen in C++: Wertebereich und Speichergröße

Wie war das gleich mit den Datentypen in C++? Int, long, long long, float, double, long double!

Datentypen in C++

Datentypen in C++

Die Programmiersprache C++ ist wohl die Königsdisziplin unter den Programmiersprachen. Hier ist alles etwas anders und genauer als in anderen Prorammiersprachen. C++ bietet eine Fülle an Datentypen. Insbesondere ist mir der Typ long long aufgefallen. Dieser doppelt soeben mal die Speichergröße einer long-Variable.

Aber auch die Möglichkeit C++ Variablen mit signed und unsigned zu versehen, ist für mich neu. Setzt man das das unsigned Label vor die Variable so nimmt diese nur positive Zahlen auf, dadurch verdoppelt sich dann auch der Wertebereich, da die negativen Zahlenbereiche wegfallen. Signed kann man sich in dem Zusammenhang sparen, denn das ist die Default-Einstellung und bewirkt dass sich der Wertebereich ins negative genauso wie ins positive erstreckt.

Wertebereiche und Speichergrößen von C++ Datentypen

Dabei muss ich noch erwähnen, dass C++ den Datenwert für Integer – je nach Betriebssystem (16, 32 und 64 Bit) – in der Speichergröße anpasst. So ist ein Integerwert in der 16 Bit-Variante so groß wie ein short (16 Bit = 2 Byte) und in der 32 und 64 Bit-Variante so groß wie ein Long (32 Bit = 4 Byte).

C++ Datentyp Bit-Variante Minimum
kleinster Wert
Maximum
größter Wert
Speicherplatz
bool (Boolean) 0 (false) 1 (true) 8 Bit, 1 Byte
char -128 +127 8 Bit, 1 Byte
unsigned char 0 255 8 Bit, 1 Byte
int 16 -32.768 +32.767 16 Bit, 2 Byte
unsigned int 16 0 65.535 16 Bit, 2 Byte
int 32 -2.147.483.648 +2.147.483.647 32 Bit, 4 Byte
unsigned int 32 0 4.294.967.295 32 Bit, 4 Byte
int 64 -9.223.372.036.854.775.808 +9.223.372.036.854.775.807 64 Bit, 8 Byte
unsigned int 64 0 18.446.744.073.709.551.615 64 Bit, 8 Byte
short -32.768 +32.767 16 Bit, 2 Byte
unsigned short 0 65.535 16 Bit, 2 Byte
long -2.147.483.648 +2.147.483.647 32 Bit, 4 Byte
unsigned long 0 4.294.967.295 32 Bit, 4 Byte
long long -9.223.372.036.854.775.808 +9.223.372.036.854.775.807 64 Bit, 8 Byte
unsigned long long 0 18.446.744.073.709.551.615 64 Bit, 8 Byte
Genauigkeit
float 6 Stellen -3,4E+38 +3,4E+38 32 Bit, 4 Byte
double 15 Stellen -1,7E+308 +1,7E+308 64 Bit, 8 Byte
long double 19 Stellen -1,1E+4932 +1,1E+4932 80 Bit, 10 Byte




C String, Speichergröße

Ein Sonderfall bildet der Datentyp String. Dieser besteht aus einzelnen Zeichen, jedes dieser Zeichen repräsentiert ein char-Datentyp (ASCII) . Deswegen ergibt sich die Speichergröße aus

[Anzahl der Zeichen] * [1 Byte (Char)] + 1 = String-Größe in Byte

Das +1 steht dabei für „\0“ und stellt ein zusätzliches Char-Zeichen (Escape) dar, welches das Variablenende kennzeichnet.

„MRKNOWING“ = 10 Byte: „M“,“R“,“K“,“N“,“O“,“W“,“I“,“N“,“G“,“\0″!

C++ String, Speichergröße

Bei dem C++ String kann man nicht genau sagen wie groß er wird, denn dieser verwaltet intern einen Zähler wie viele Buchstaben der String hält. Jedoch kann man diese Größe ermitteln und zwar mit der std-Methode capacity.

[code language=“c“]
std::string s("Mrknowing");
std::cout << s.capacity() << " Byte" << endl;
[/code]

Source-Code zum bestimmen von maximal, minimal und Speicherwerte in C++ Datentypen

Dabei sollte man bedenken, dass sich der Integerwert an der Bit-Version des auszuführenden Betriebssystems orientiert.

[code language=“c“]
#include <iostream>
using namespace std;

int main()
{
//headline
cout << "Size of Datatyps in C++" << endl;
//boolean
cout << " bool: " << sizeof(bool) << "Byte \t"
<< "Min: " << false << "\t"
<< "Max: " << true << endl;
cout << "\t————-" << endl;
//char
cout << " char: " << sizeof(char) << "Byte \t"
<< "Min: " << CHAR_MIN << "\t"
<< "Max: " << CHAR_MAX << endl;
//unsigned char
cout << " uchar: " << sizeof(unsigned char) << "Byte \t"
<< "Min: " << "0" << "\t"
<< "Max: " << UCHAR_MAX << endl;
cout << "\t————-" << endl;
//int
cout << " int: " << sizeof(int) << "Byte \t"
<< "Min: " << INT_MIN << "\t"
<< "Max: " << INT_MAX << endl;
//unsigned int
cout << " uint: " << sizeof(unsigned int) << "Byte \t"
<< "Min: " << "0" << "\t"
<< "Max: " << UINT_MAX << endl;
cout << "\t————-" << endl;
//short
cout << " short: " << sizeof(short) << "Byte \t"
<< "Min: " << SHRT_MIN << "\t"
<< "Max: " << SHRT_MAX << endl;
//unsigned short
cout << " ushort: " << sizeof(unsigned short) << "Byte \t"
<< "Min: " << "0" << "\t"
<< "Max: " << USHRT_MAX << endl;
cout << "\t————-" << endl;
//long
cout << " long: " << sizeof(long) << "Byte \t"
<< "Min: " << LONG_MIN << "\t"
<< "Max: " << LONG_MAX << endl;
//unsigned long
cout << " ulong: " << sizeof(unsigned long) << "Byte \t"
<< "Min: " << "0" << "\t"
<< "Max: " << ULONG_MAX << endl;
cout << "\t————-" << endl;
//long
cout << " long long: " << sizeof(long long) << "Byte \t"
<< "Min: " << LLONG_MIN << "\t"
<< "Max: " << LLONG_MAX << endl;
//unsigned long
cout << " ulong long: " << sizeof(unsigned long long) << "Byte \t"
<< "Min: " << "0" << "\t"
<< "Max: " << ULLONG_MAX << endl;
cout << "\t————-" << endl;
//float
cout << " float: " << sizeof(float) << "Byte \t"
<< "Min: " << FLT_MIN << "\t"
<< "Max: " << FLT_MAX << endl;
//double
cout << " double: " << sizeof(double) << "Byte \t"
<< "Min: " << DBL_MIN << "\t"
<< "Max: " << DBL_MAX << endl;
//long double
cout << " long double: " << sizeof(long double) << "Byte \t"
<< "Min: " << LDBL_MIN<< "\t"
<< "Max: " << LDBL_MAX << endl;
//Ende
return 0;
}
[/code]

Anhang: Download

weblink Sourcecode download: datetype.ccp datetype.ccp

MrKnowing

Programmierer und Wissensnerd! Kontaktiere mich auf Google+ oder einfach per Mail danny@mrknowing.com

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert