21.07.2013 Aufrufe

3. C-Datentypen

3. C-Datentypen

3. C-Datentypen

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.

Erstellt von Mario Mayr (Quelle leider vergessen)<br />

<strong>3.</strong> C-<strong>Datentypen</strong><br />

Variablen<br />

Für die Verarbeitung von Informationen in einem Programm müssen im Speicher des<br />

Rechners Plätze (Variablen) zur Aufnahme dieser Informationen reserviert werden. Bevor<br />

diese Variablen benutzt werden können, müssen sie zuerst deklariert werden. Dies geschieht<br />

am Anfang einer Funktion vor allen ausführbaren Anweisungen. Die Vereinbarung beschreibt<br />

die Eigenschaften von Variablen und besteht aus einer Typangabe und einer Liste von<br />

Variablen (Namen), die dann diesen Typ besitzen. z.B.:<br />

int a,b;<br />

float x,y;<br />

char ch;<br />

Hier folgt eine Liste aller elementarer numerischer Variablentypen die in C zur Verfügung<br />

stehen:<br />

Type Keyword Bytes Range<br />

character char 1 -128 .. 127<br />

unsigned character unsigned char 1 0 .. 255<br />

integer int 2 -32 768 .. 32 767<br />

short integer short 2 -32 768 .. 32 767<br />

long integer long 4<br />

-2 147 483 648 .. 2 147 483<br />

647<br />

unsigned integer unsigned int 2 0 .. 65 535<br />

unsigned short integer<br />

unsigned<br />

short<br />

2 0 .. 65 535<br />

unsigned long integer unsigned long 4 0 .. 4 294 967 295<br />

single-precision floating-point (7<br />

Stellen)<br />

double-precision floating-point (19<br />

Stellen)<br />

Variablen-namen müssen folgenden Regeln gehorchen:<br />

float 4 1.17E-38 .. <strong>3.</strong>4E38<br />

double 8 2.2E-308 .. 1.8E308<br />

• Der Name kann aus Buchstaben, Zahlen und dem Unterstrich _ bestehen. Mindestens<br />

die ersten 31 Zeichen eines Namens sind signifikant. Variablennamen werden in C<br />

üblicherweise klein geschrieben.<br />

• Das erste Zeichen muss ein Buchstabe sein. Der Unterstrich gilt als Buchstabe, er<br />

sollte jedoch nicht an erster Stelle verwendet werden.<br />

• Die reservierten Worte der C Programmiersprache können nicht als Variablennamen<br />

verwendet werden.


Erstellt von Mario Mayr (Quelle leider vergessen)<br />

Tabelle der reservierten Schlüsselworte :<br />

auto const double float int short struct unsigned<br />

break continue else for long signed switch void<br />

case default enum goto register sizeof typedef volatile<br />

char do extern if return static union while<br />

Konstante Variablen<br />

Neben den eigentlichen Variablen, bei denen eine Werteänderung erlaubt ist, können in C<br />

auch "Konstante Variable" deklariert werden, die keine Änderung des Wertes mehr erlauben.<br />

Die allgemeine Formel sieht so aus:<br />

const typ name = wert;<br />

Beispiele:<br />

const int Apostel = 12;<br />

const double PI = <strong>3.</strong>14159265;<br />

Konstanten<br />

Neben Variablen werden im Programm oft auch konstante Werte verwendet. Ein konstanter<br />

Wert ist ein feststehender Ausdruck, der nicht geändert werden kann. Konstante werden<br />

benutzt um Variablen mit Werten vorzubelegen, oder als Teile von Ausdrücken. Der<br />

Ausdruck 2 + 3 besteht z.B. nur aus Konstanten, während in x + 5 eine Variable (x) und<br />

eine Konstante auftritt.<br />

Man unterscheidet :<br />

Ganzzahlkonstanten<br />

wie z.B.:<br />

68 /* signed short int */<br />

-68 /* signed short int */<br />

68U /* unsigned short int */<br />

68L /* signed long int */<br />

1234567 /* signed long int */<br />

Fließkommakonstanten<br />

Bei Fließkommakonstanten kann sowohl die Schreibweise ±xxx.xxx als auch<br />

±xxx.xxxE±yyy verwendet werden. Gültige Konstanten sind:<br />

0.00012<br />

12<strong>3.</strong>456<br />

1.0e-12<br />

12.3E23<br />

1.<br />

1E1


Erstellt von Mario Mayr (Quelle leider vergessen)<br />

Zeichenkonstanten<br />

Zeichenkonstanten werden in Apostrophe gesetzt. Nichtdruckbare Zeiche oder solche, die<br />

nicht auf der Tastatur verfügbar sind, werden als Escapesequenzen angegeben.<br />

'a'<br />

'\n'<br />

'\t'<br />

'\x41'<br />

Intern werden Zeichen als int-Werte verwaltet, so daß 'a' und 97 eigentlich dasselbe<br />

darstellt:<br />

#include <br />

int main(void)<br />

{<br />

printf("%c ist in ASCII: %d\n", 'a', 'a');<br />

printf("%c ist wirklich in ASCII: %d\n", 97, 97);<br />

return 0;<br />

}<br />

Datentypumwandlungen (wer es zum weiteren Verständnis braucht !?!)<br />

<strong>Datentypen</strong> können in C im Gegensatz zu anderen Programmiersprachen ineinander<br />

umgewandelt werden. In C werden Typumwandlungen entweder implizit oder durch ein<br />

spezielles Konstrukt explizit durchgeführt. In einem gemischten Ausdruck wird implizit eine<br />

Typumwandlung so vorgenommen, daß versucht wird auf den größten Typ des Ausdruckes zu<br />

konvertieren. Die Typ-Reihenfolge ist dabei:<br />

int < long < unsigned < unsigned long < float < double<br />

Die Regeln für die Umwandlung sind:<br />

• Ist ein Operator long double, wird auch der andere auch in long double umgewandelt.<br />

• Ist ein Operator double, wird auch der andere auch in double umgewandelt.<br />

• Ist ein Operator float, wird auch der andere auch in float umgewandelt.<br />

• Andernfalls werden char und short in int gewandelt.<br />

• Falls dann einer der Operanden long ist, wird der andere in long geändert.<br />

Wird der Ausdruck einer Variablen zugewiesen muß vielleicht noch eine Konversion<br />

vorgenommen werden. Beispiele von Umwandlungen enstprechender Variablen zeigt<br />

folgende Aufstellung:<br />

char c; int i; long l; float f; double d;<br />

c - i Umwandlung int<br />

d = c - i Umwandlung int, Zuweisung an double<br />

l * 2.0 - i Umwandlung double<br />

c = l * 2.0 - i Umwandlung double, Zuweisung an char<br />

f * d Umwandlung double<br />

l = f * d Umwandlung double, Zuweisung an long<br />

1 + <strong>3.</strong>0 Umwandlung double<br />

'a' + 1 Umwandlung int<br />

i = i / d Umwandlung double, Zuweisung an int


Erstellt von Mario Mayr (Quelle leider vergessen)<br />

In einem beliebigen Ausdruck kann man mit einer Umwandlungsoperation, einem<br />

sogenannten type-cast, die explizite Typumwandlung erzwingen.<br />

Bei<br />

( typ-name ) ausdruck<br />

wird der Wert des Ausdrucks unter Benutzung der oben angegebenen Regeln umgewandelt.<br />

Im Programm<br />

#include <br />

int main(void)<br />

{<br />

int n=1;<br />

double d;<br />

d = n / 3;<br />

printf("%lf\n", d);<br />

return 0;<br />

}<br />

würde die Ausgabe, obwohl die Zuweisung an eine double Variable erfolgt, Null ergeben.<br />

Durch einen entsprechenden type-cast erfolgt die Berechnung so, dass die Ausgabe wie<br />

gewünscht 0.33333333 liefert.<br />

#include <br />

int main(void)<br />

{<br />

int n=1;<br />

double d;<br />

d = (double) n / 3;<br />

printf("%lf\n", d);<br />

return 0;<br />

}<br />

Bei der Berechnung des Ausdruckes (double) n / 3 wird, da die Konstante 3 eine<br />

Ganzzahlkonstante ist, zusätzlich noch eine implizite Umwandlung ausgeführt.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!