Programmieren in ANSI-C Kapitel 2: Datentypen, Variablen und Konstanten
2.1 Unterschiedliche Datentypen
Von zentraler Bedeutung in jeder Programmiersprache sind Datentypen, das heißt, die Festlegung, von welcher Art
ein Wert im Programm ist. Diese Information benötigt der Computer, um bestimmen zuu können, wieviel Platz ein
solcher Wert (im Folgenden verwende ich für diese Werte den Begriff
Variablen) im Speicher belegt.
Man unterscheidet grob zwei Typen von Variablen, die ihrerseits in verschiedene Unterklassen unterteilt werden können:
Ganzzahlige und Fließkommazahlen
2.1.1 Ganzzahlige Datentypen
| Typ (Ganzzahl) |
Größe (Bit) |
Wertebereich |
| char |
8 |
-128 bis 127 |
| unsigned char |
8 |
0 bis 255 |
| int |
16 |
-32768 bis 32767 |
| unsigned int |
16 |
0 bis 65535 |
| short |
16 |
-32768 bis 32767 |
| unsigned short |
16 |
0 bis 65535 |
| long |
32 |
-2147483648 bis 2147483647 |
| unsigned long |
32 |
0 bis 4294967295 |
Der Typ char dient zur speicherung von Buchstaben, Ziffern und Sonderzeichen. Da intern jedes Zeichen
als Zahlencode (auch ASCII-Code genannt) gespeichert wird, wird der Typ char als Ganzzahltyp behandelt.
Mit ihm lässt sich in C/C++ genauso rechnen wie mit allen anderen Zahlentypen ( z.B. 'B' + 1 = 'C' ).
Die Unterscheidung zwischen int und short ist deshalb notwendig, weil der Typ int nicht auf
allen Computersystemen (z.B. Macintosh) 16 Bit groß ist. Im intel-kompatiblen Bereich entspricht der Typ int
jedoch dem Typ short.
2.1.2 Fließkomma - Datentypen
| Typ (Ganzzahl) |
Genauigkeit
(Bit) |
Größe (Bit) |
Wertebereich |
| float |
7 |
32 |
3.4*(10^-38) bis 3.4*(10^+38) |
| double |
15 |
64 |
1.7*(10^-308) bis 1.7*(10^+308) |
| long double |
17 |
80 |
3.4*(10^-4932) bis 1.1*(10^+4932) |
Die Angabe der Genauigkeit ist deswegen notwendig, weil man wissen will, auf wieviele Stellen (Vor- und Nachkommateil)
eine Zahl mindestens noch genau dargestellt wird.
2.1.3 Der Typ 'void'
An dieser Stelle möchte ich bereits den Datentyp void einführen. Wie wir später sehen werden, benötigt
jede Funktion Rückgabewerte und Übergabeparameter. Der Typ void gibt an, das der Funktion kein Parameter
übergeben wird bzw. die Funktion keinen Rückgabewert hat. Eine Funktion vom Typ void entspräche also einer
Prozedur in anderen Programmiersprachen. Die Verwendung dieses Typs erkennt man in Kapitel 3 an Programmbeispielen deutlicher.
2.2 Deklaration von Variablen
Prinzipiell muss bei C/C++ jede Variable vor der ersten Verwendung deklariert sein. Dies gilt im Übrigen auch für Funktionen.
Das heißt, sie müssen dem Compiler den Datentyp bekannt geben. Im Programmcode sieht das zum Beispiel so aus:
int iZahl; //Integer-Typ
float fZahl; //Float-Typ
char Zeichen; //ASCII-Zeichen
short sZahl = 10; //Short-Variable, die zu beginn den Wert 10 hat
|
2.2.1 Variablennamen
Bei der Vergabe von Variablennamen sollte man auf die Aussagefähigkeit des Namens achten (zum Beispiel 'Zähler' statt 'z'). Je größer
das Programm wird, desto wichtiger sind aussagekräftige Namen. Ich empfehle ebenfalls, bei größeren Projekten den Variablentyp als Präfix
im Namen mit anzugeben (z.B. 'i_Zahl' oder 'iZahl' statt nur 'Zahl' für eine Integer-Variable). Dadurch lässt sich der Programmcode leichter nachvollziehen.
Folgende Regeln sind beim festlegen von Variablennamen (auch bei Konstantennamen!) unbedingt zu beachten:
- Zulässig sind folgende Zeichen: A-Z, a-z, 0-9 und der Unterstrich '_'
- Groß- und Kleinschreibung sind zu beachten ('zahl', 'ZAHL' und 'Zahl' sind drei verschiedene Variablen)
- Schlüsselwörter von C/C++ (z.B. 'switch', 'float', 'char' ...) sind als Variablennamen nicht erlaubt, dürfen jedoch Bestandteil des
Namens sein (z.B. 'float_PI', 'eine_char_variable').
- Variablennamen dürfen nicht mit einer Ziffer beginnen
2.3 Deklaration von Konstanten
Für fixe Werte verwendet man in einem Programm nicht Variablen sondern Konstanten. Ihnen wird bei der Deklaration ein fester Wert zugewiesen,
der sich während des Programmlaufes nicht mehr ändern kann.
const float PI = 3.14159265;
const int WeltWunder = 7;
|
|