1 Datentypen in C
kner 2020
Table of Contents
1.1 Wertebereich von Variablen
Mit Vorzeichen
Bezeichnung |
Bit |
Wertebereich |
Anmerkung |
int8_t |
8 |
-128 … +127 |
|
int16_t |
16 |
-32000 bis +32000 |
grob gerundete Grenzen |
int |
16 |
-32700 bis +32700 |
dieser Datentyp ist nicht typsicher, d.h. er hat je nachdem, auf welchem System man programmiert entweder 16 oder 32 Bit Breite |
signed char |
8 |
-128 … + 127 |
nicht typsicher |
Ohne Vorzeichen
Bezeichnung |
Bit |
Wertebereich |
Anmerkung |
uint8_t |
8 |
0 … +255 |
|
uint16_t |
16 |
0 bis +65536 |
|
unsigned int |
16 |
0 bis +65536 |
nicht typsicher |
char unsigned char |
8 |
0 … +255 |
nicht typsicher! |
Float
Bezeichnung |
Bit |
Wertebereich |
Anmerkung2 |
float |
32 |
±1.18E-38 bis ±3.39E+38 |
bei diesem Compiler kein Unterschied zwischen float und double (und long double) |
double |
32 |
±1.18E-38 bis ±3.39E+38 |
|
Die Grenzen dieser Wertebereiche kann man in den Libraries <float.h> und <limits.h> abfragen.
Beispiel: Was ergibt folgender Code am AVR Compiler?
uint8_t x = -1;
uint16_t y = -1;
Ergebnis: x enthält 255 und y enthält 65535, die Zahl -1 wird als Bitmuster 0xff bzw. 0xffff abgelegt.
Beispiel: Vereinbaren sie eine Variable, die von 1 bis 10 zählt
Antwort: uint8_t x; wir wählen immer den Datentyp, der am wenigsten Speicher benötigt, aber trotzdem für mögliche spätere Änderungen groß genug ist.
Beispiel: Wie kann man verhindern, dass man viele Programmzeilen änder muss, wenn sich später herausstellt, dass man den Typ zu klein gewählt hat?
#define TMyType uint8_t
TMyType x;