|
Navigation: Compiler > CompactC > Datentypen |
![]() ![]()
|
Werte haben immer einen bestimmten Datentyp. Die Integerwerte (ganzzahlige Werte) haben in CompactC einen 8 oder 16 Bit breiten Datentyp, floating point Zahlen sind immer 4 byte lang.
Datentyp |
Vorzeichen |
Wertebereich |
Bit |
|
|||
char |
Ja |
-128 ... +127 |
8 |
unsigned char |
Nein |
0 ... 255 8 |
8 |
byte |
Nein |
0 ... 255 8 |
8 |
int |
Ja |
-32768 ... +32767 |
16 |
unsigned int |
Nein |
0 ... 65535 |
16 |
word |
Nein |
0 ... 65535 |
16 |
float |
Ja |
±1.175e-38 to ±3.402e38 |
32 |
Wie man sieht, sind die Datentypen "unsigned char" und byte, sowie "unsigned int" und word identisch.
Strings
Es existiert kein expliziter "String" Datentyp. Ein String basiert auf einem character array. Man muß die Größe des arrays so wählen, daß alle Zeichen des Strings in das character array passen. Zusätzlich wird Platz für ein Terminierungszeichen (dezimal Null) benötigt, um das Ende der Zeichenkette anzuzeigen.
Typkonvertierung
Bei arithmetischen Ausdrücken passiert es sehr oft, daß einzelne Werte nicht vom gleichen Typ sind. So sind die Datentypen im folgenden Ausdruck gemischt (a ist integer variable).
a + 5.5
In diesem Fall wird a zuerst in den Datentyp float konvertiert und danach 5.5 addiert. Der Datentyp des Ergebnisses ist auch float. Es gelten bei der Typkonvertierung folgende Regeln:
| • | Ist bei der Verknüpfung von zwei 8 Bit oder 16 Bit Integerwerten einer der beiden Datentypen vorzeichenbehaftet ("signed") so ist auch das Ergebnis des Ausdrucks vorzeichenbehaftet. D.h., die Operation wird "signed" ausgeführt. |
| • | Ist einer der beiden Operanden vom Typ float, so ist auch das Ergebnis vom Typ float. Sollte der andere der beiden Operanden einen 8 Bit oder 16 Bit Datentyp haben, so wird er vor der Operation in einen float Datentyp umgewandelt. |