3. C-Datentypen
3. C-Datentypen
3. C-Datentypen
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.