Seitenleiste

Wiki

Community

Datentypen

Zählbare

Fließkomma

Datenstrukturen

Attribute

Speicherklassen

Typqualifizierer

Integer-Datentypen

Die Grunddatentypen

Die wichtigsten Datentypen Die wichtigsten Datentypen in C sind char, short und long int

Ein char ist ein ein Byte großer Speicher, in dem eine Zahl von -128 bis 127 gespeichert werden kann oder auch ein ASCII-Zeichen.

short hingegen ist 2 Bytes groß und kann eine Zahl von -32768 bis 32767 aufnehmen.

long int verdoppelt die Kapazität nochmals (auf 4 Bytes) und ermöglicht es eine Zahl von -2147483648 bis 2147483647 zu speichern.

Weiß man also genau, dass man nur Zahlen im Rahmen von -128-+127 benutzt, besteht so die Möglichkeit Speicher zu sparen, indem man genau bestimmt, dass der Computer auch nur ein Byte (char) benutzt.

Oft benutzt, aber keine festgelegte Bedeutung hat der Datentyp int (integer), der gewissermaßen aus Pascal übernommen wurde. Problem dieses Datentyps ist jedoch, dass er auf dem Amiga und auf dem PC unterschiedlich definiert wurde: Auf dem alten PCs (ursprünglich 16-Bit-Rechner) ist int gleichbedeutend mit short, auf dem Amiga, Macs, wie neueren PCs dessen Prozessoren grundsätzlich eine Breite von 32 Bit haben, wurde int also mit long int gleichgesetzt.

int ist meistens als 32 Bit breit definiert. Es gibt aber keine Garantie, sollte man also damit rechnen, dass das eigene Programm auf einem alten Compiler kompiliert werden soll, sollte man besser long int verwenden, um 32 Bit (oder mehr) zu erhalten. long int kann man zumeist einfach mit long abkürzen. Auf 64 Bit Systemen wird's dann noch schwieriger, wenn int wieder 32 Bit ist, long long int aber 64 Bit groß. Der Standard definiert für diese Datentypen nur die Mindestgröße, die für int 16 Bit beträgt und für long int 32 Bit. Es darf aber auch mehr sein. In aktueller C-Norm finden sich auch Datentypen, die klar vorgeben, wie groß ein integer sind. Diese sind allerdings noch nicht weit verbreitet. Die genauen Größen der einzelnen Datentypen für Dein System findest Du in der Standard-C-Library im Header limits.h.

Diese drei Datentypen entstehen dadurch, dass moderne Prozessoren auf den Arbeitsspeicher Byteweise (8 Bit), Wortweise(16 Bit) oder Langwortweise(32 Bit) zugreifen können.

signed / unsigned

Häufig braucht man keine negativen Zahlen. Dafür besteht die Möglichkeit, die bisher vorgestellten Dateitypen zu verändern, indem man dem Compiler mitteilt, dass kein Vorzeichen notwendig ist.

Um dies zu erreichen, benutzt man das Schlüsselwort unsigned. Im Sourcecode wird vor den Datentyp einfach unsigned vorgesetzt, also unsigned char, unsigned short und unsigned long int.

Damit werden die Zahlenbereiche also von 0-255 (unsigned char), 0-65535(unsigned short) und 0-4294967295 (unsigned long int) verschoben.

Als Gegenstück existiert das Schlüsselwort signed (also signed char, signed short, signed long int), was zwar zu den gerade mal 31 Schlüsselwörtern gezählt wird, jedoch wohl kaum in einem Sourcecode auftauchen wird. Der Grund liegt einfach darin, dass jeder (mir bekannte) Compiler einen Datentyp ohne das Schlüsselwort unsigned Variablen automatisch als signed anmeldet und daher kein Programmierer sich die Arbeit macht, das Schlüsselwort signed noch einmal extra vor den Datentyp zu schreiben.

Faule Programmierer

Da es den meisten Programmierern aber auch das zu viel Tipparbeit ist, die Datentypen mit dem Schlüsselwort unsigned auszuschreiben, finden sich häufig Umschreibungen für die Datentypen und tragen nun die entsprechenden Namen, wie die Datentypen in Assembler benannt sind. Parallel dazu wurden die signed Datentypen umbenannt.

BYTE    =   (signed) char
UBYTE   =   unsigned char
WORD    =   (signed) short
UWORD   =   unsigned short
LONG    =   (signed) long
ULONG   =   unsigned long

Zu beachten ist, dass die nachträglich definierten Dateitypen groß geschrieben werden, die originalen Dateitypen klein. Ebenfalls klein geschrieben werden die Schlüsselwörter signed und unsigned. Diese Definitionen sind nicht Teil der Sprache C, dennoch finden sie sich in verschiedenen Projekten so oder ähnlich wieder.

Weiterhin wurde der Datentyp BOOL definiert, der nur die Zahlen NULL (FALSE) und Eins (TRUE) annehmen soll und damit nur Wahrheitsaussagen machen darf. Dies ist sinnvoll, wenn man nur kurze Antworten von einer Prozedur wünscht. Schreibt man zum Beispiel eine Prozedur, die Speicher für das Programm besorgt und zum Beispiel ein Fenster öffnet, kann diese eine Aussage machen im Sinne, dass alles geklappt hat und das Programm starten kann oder, dass ein Fehler aufgetreten ist und das Programm abbrechen soll.