der Datentyp integer repräsentiert in C einen ganzzahligen Datentyp.
Allerdings ist der Wertebereich nicht exakt definiert, sondert unter anderem abhängig von der CPU Architektur, wie der Registerbreite.
Die Größe eines integer beträgt 2 Byte oder 4 Byte, je nach Architektur des Zielsystem.
Es gelten folgende Abstufungen:
sizeof(char) <= sizeof(short) <= sizeof(integer) <= sizeof(long) <= sizeof(long long)
Die Mindestgrößen der Standardtypen ist in der C Library <limits.h> definiert.
Datentype | Speicherplatz | Wertebereich | Anmerkung |
---|---|---|---|
char | 1 Byte | 0 bis 255 oder -128 bis 127 | Abhängig von der Compiler Standardeinstellung (meist unsigned char) |
unsigned char | 1 Byte | 0 bis 255 | |
signed char | 1 Byte | -128 bis 127 | |
short | 2 Byte | -32768 bis 32767 | |
unsigned short | 2 Byte | 0 bis 65535 | |
int | 2 Byte oder 4 Byte | -32768 bis 32767 oder -2147483648 bis 2147483647 | je nach Zielarchitektur! |
unsigned int | 2 Byte oder 4 Byte | 0 bis 65535 oder 0 bis 4294967295 | |
long | 4 Byte | -2147483648 bis 2147483647 | |
unsigned long | 4 Byte | 0 bis 4294967295 | |
long long | 8 Byte | -9223372036854775808 bis9223372036854775807 | unterstützt seit C99 |
unsigned long long | 8 Byte | 0 bis 18446744073709551615 | unterstützt seit C99 |
Es empfiehlt sich mit defines eigene Datentypen zu definierten z.B.
#define uint32 unsigned int
oder nach dem C99 Standard die <stdint.h> verwenden, wo optional folgende Macros definiert sind:
#include <stdint.h> int16_t a=0; uint16_t b=0; int32_t c=0; uint32_t d=0;
Achtung: Kennt der Compiler nicht das Zielsystem, können die exakten Datentypen von der <stdint.h> nicht verwendet werden.
weiterführende Links