Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
3 Datentypen<br />
3.1 Basisdatentypen<br />
C ist e<strong>in</strong>e stark typisierte <strong>Programmiersprache</strong>, das heisst dass stark zwischen verschiedenen Arten<br />
von Daten unterschieden wird. Man unterscheidet gr<strong>und</strong>sätzlich zwischen e<strong>in</strong>fachen Datentypen<br />
<strong>und</strong> zusammengesetzten Datentypen. In <strong>die</strong>sem Kapitel werden <strong>die</strong> e<strong>in</strong>fachen Datentypen vorgestellt.<br />
Alle e<strong>in</strong>fachen Datentypen <strong>in</strong> C s<strong>in</strong>d für skalare Werte def<strong>in</strong>iert.<br />
Bei den e<strong>in</strong>fachen Datentypen wird zunächst zwischen Integer (Ganze Zahlen) <strong>und</strong> Fliesskomma<br />
Datentypen unterschieden. Zeichenketten (Str<strong>in</strong>gs) s<strong>in</strong>d e<strong>in</strong> Spezialfall von Feldern (Arrays), welche<br />
<strong>in</strong> e<strong>in</strong>em späteren Kapitel behandelt werden. Es gibt zwar Str<strong>in</strong>gliterale (Konstanten), aber ke<strong>in</strong>en<br />
eigentlichen Str<strong>in</strong>g-Datentypen.<br />
Ganzzahlige Datentypen s<strong>in</strong>d <strong>in</strong>t <strong>und</strong> char, Fliesskommatypen s<strong>in</strong>d float <strong>und</strong> double. Der<br />
Datentyp char ist eigentlich zur Aufnahme von e<strong>in</strong>zelnen Buchstaben (ASCII-Codes) vorgesehen,<br />
kann aber auch für kle<strong>in</strong>e Zahlen (8-Bit-Werte) benutzt werden. Die ganzzahligen Datentypen können<br />
zusätzlich mit den Qualifizierern signed <strong>und</strong> unsigned explizit als vorzeichenbehaftet (positiv<br />
<strong>und</strong> negativ), oder vorzeichenlos (nur positiv) festgelegt werden. Die Grösse des Datentyps<br />
<strong>in</strong>t kann zudem mit den qualifizierern short <strong>und</strong> long modifiziert werden. Alle <strong>in</strong>t Typen<br />
s<strong>in</strong>d per Default vorzeichenbehaftet. Beim Datentyp char ist nicht festgelegt (!), ob er mit oder<br />
ohne Vorzeichen implementiert ist.<br />
Datentyp Bits *2) Wertebereich Literal (Konstante)<br />
[C99]_Bool, bool >=8 0 <strong>und</strong> 1 true, false, 0, 1<br />
char 8 -128 ... +127<br />
oder 0 ... 255 *1)<br />
'a' '\n' 'B'<br />
unsigned char 8 0 ... 255 'a' '\n' 'B'<br />
signed char 8 -128 ... 127 'a' '\n' 'B'<br />
short <strong>in</strong>t 16 -32768 ... 32767 --unsigned<br />
short <strong>in</strong>t 16 0 ... 65535 --signed<br />
short <strong>in</strong>t 16 -32768 ... 32767 --<strong>in</strong>t<br />
16-32 -2 31 ...2 31 -1 123 0x123 077 -44<br />
unsigned <strong>in</strong>t 16-32 0 ... 2 32 -1 123u 0x123U 077u<br />
signed <strong>in</strong>t 16-32 -2 31 ...2 31 -1 123 0x123 077<br />
long <strong>in</strong>t 32 -2 31 ...2 31 -1 123L 0x123L 077 -44L<br />
long unsigned <strong>in</strong>t 32 0 ... 2 32 -1 123uL 0x123uL 077UL<br />
long signed <strong>in</strong>t 32 -2 31 ...2 31 -1 123L 0x123L 077L<br />
[C99] long long <strong>in</strong>t >= 64 -2 63 ...2 63 -1 123LL 0x123LL 077LL<br />
[C99] unsigned long long <strong>in</strong>t >= 64 0 ... 2 64 -1 12uLL<br />
07ULL<br />
0x123ULL<br />
[C99] signed long long <strong>in</strong>t >= 64 -2 63 ...2 63 -1 123LL 0x123LL 077LL<br />
float 32 -3.4*10 38 ...3.4*10 38 1.23f 3.14f 1e-10f 0.0f<br />
double 64 -1.7*10 308 ..1.7*10 308 1.23 3.14 1e-10 0.0<br />
long double 64...80 +/-1.18*10 4932 1.23L 3.14L 1e-10L 0.0L<br />
char * (Str<strong>in</strong>g) n*8 - "Hallo" "Welt \n"<br />
2 31 = 2'147'483'648, 2 32 = 4'294'967'296, 2 63 = 9.22*10 18 , 2 64 = 18.4*10 18<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 14/147