integer != integer

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.

DatentypeSpeicherplatzWertebereichAnmerkung
char1 Byte0 bis 255
oder
-128 bis 127
Abhängig von der Compiler Standardeinstellung
(meist unsigned char)
unsigned char1 Byte0 bis 255
signed char1 Byte-128 bis 127
short2 Byte-32768 bis 32767
unsigned short2 Byte0 bis 65535
int2 Byte
oder
4 Byte
-32768 bis 32767
oder
-2147483648 bis 2147483647
je nach Zielarchitektur!
unsigned int2 Byte
oder
4 Byte
0 bis 65535
oder
0 bis 4294967295
long4 Byte-2147483648 bis 2147483647
unsigned long4 Byte0 bis 4294967295
long long8 Byte-9223372036854775808 bis9223372036854775807unterstützt seit C99
unsigned long long 8 Byte0 bis 18446744073709551615unterstü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

https://en.wikipedia.org/wiki/C_data_types

Schreibe einen Kommentar

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