21.11.2013 Aufrufe

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 'a' '\n' 'B'<br />

oder 0 ... 255 *1)<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 ---<br />

unsigned short <strong>in</strong>t 16 0 ... 65535 ---<br />

signed short <strong>in</strong>t 16 -32768 ... 32767 ---<br />

<strong>in</strong>t 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 0x123ULL<br />

07ULL<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 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 14/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!