C-Programmierung: Datentypen

Aus Wikibooks

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Grunddatentypen

[Bearbeiten] Ganzzahlen

Grafische Darstellung der Datentypen in C
Typ Vorzeichenbehaftet Vorzeichenlos
char -128 bis 127 0 bis 255
short int -32.768 bis 32.767 0 bis 65.535
long int -2.147.483.648 bis 2.147.483.647 0 bis 4.294.967.295
long long int -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 0 bis 18.446.744.073.709.551.615

Alle angegeben Werte sind Mindestgrößen. Die in der Implementierung tatsächlich verwendeten Größen sind in der Headerdatei limits.h definiert.

Auf Maschinen, auf denen negative Zahlen im Zweierkomplement dargestellt werden, erhöht sich der negative Zahlenbereich um eins. Deshalb ist beispielsweise der Wertebereich für den Typ signed char bei den meisten Implementierungen zwischen -128 und +127.

Eine ganzzahlige Variable wird mit dem Schlüsselwort unsigned als vorzeichenlos vereinbart, mit dem Schlüsselwort signed als vorzeichenbehaftet. Fehlt diese Angabe, so ist die Variable vorzeichenbehaftet, beim Datentyp char ist dies implementierungsabhängig.

Der Typ int besitzt laut Standard eine "natürliche Größe". Allerdings muss short kleiner oder gleich groß wie int und int muss kleiner oder gleich groß wie long sein.

Der Standard legt fest, dass char groß genug sein muss, um alle Zeichen aus dem Standardzeichensatz aufnehmen zu können. Wird ein Zeichen gespeichert, so garantiert der Standard, dass char vorzeichenlos ist.

Mit dem C99-Standard wurde der Typ _Bool eingeführt. Er kann die Werte 0 (false) und 1 (true) aufnehmen. Wie groß der Typ ist, schreibt der ANSI-Standard nicht vor, allerdings muss _Bool groß genug sein, um 0 und 1 zu speichern. Wird ein Wert per "cast" in den Datentyp _Bool umgewandelt, dann ist das Ergebnis 0, wenn der umzuwandelnde Wert 0 ist, andernfalls ist das Ergebnis 1.

[Bearbeiten] Fließkommazahlen

Die von der Implementierung verwendeten Zahlen sind in der Headerdatei <float.h> definiert.

[Bearbeiten] Größe eines Typs ermitteln

Die Größe eines Typs auf einem System wird mit dem sizeof-Operator ermittelt. Siehe Referenzkapitel Operatoren. sizeof typ gibt aber nicht, wie oft vermutet, die Größe einer Variable dieses Typs in Bytes zurück, sondern nur, um welchen Faktor eine solche Variable größer als eine byte-Variable ist. Da jedoch byte auf den meisten Implementierungen ein Byte belegt, stimmen diese Werte meistens überein.

Persönliche Werkzeuge