Kapitel 2
Elementare Datentypen, Konstanten und Variablen
In diesem Kapitel arbeiten Sie mit
■ ganzzahligen Typen
Für Zeichen und ganze Zahlen stehen in C die Typen char, short, int, long und long long zur Verfügung. Sie unterscheiden sich durch ihre Wertebereiche. Die ganzzahligen Typen, ausgenommen der Typ char, werden standardmäßig mit Vorzeichen interpretiert. Beim Typ char ist dies vom Compiler abhängig. Durch Voranstellen des Schlüsselworts signed oder unsigned kann explizit festgelegt werden, ob ein ganzzahliger Typ mit oder ohne Vorzeichen interpretiert wird.
■ Gleitpunkttypen
Zur Darstellung reeller Gleitpunktzahlen gibt es die Typen float, double sowie long double. Sie unterscheiden sich durch ihren Wertebereich und die Genauigkeit. Die Genauigkeit n bedeutet, dass zwei Gleitpunktzahlen, die sich innerhalb der ersten n Dezimalziffern unterscheiden, auch verschieden gespeichert werden.
■ Literalen
Bei einem Literal handelt es sich um eine Zeichenfolge, die eine numerische Konstante, eine Zeichenkonstante oder eine String-Konstante repräsentiert. Ganzzahlige Konstanten können dezimal, oktal (mit führender 0) oder hexadezimal (mit führendem 0x oder 0X) dargestellt werden. Für Gleitpunktkonstanten gibt es auch die exponentielle Schreibweise (z.B. 2.5E6). Zeichenkonstanten bestehen aus einem Zeichen eingeschlossen in einfachen Hochkommas (z.B. 'A'). String-Konstanten können mehrere Zeichen enthalten, die in doppelte Hochkommas (z.B. "Hallo?") eingeschlossen sind. Dabei können bestimmte Steuerzeichen als Escape-Sequenzen angegeben werden (z.B. \n für »Zeilenwechsel«, engl. line feed).
■ Variablen
Variablen können Daten speichern. Jede Variable muss vor ihrer Verwendung deklariert werden. Die Deklaration legt den Typ und den Namen der Variablen fest. Dabei kann die Variable auch initialisiert werden.
Namen bestehen aus einer Folge von Buchstaben (ohne Umlaute und ß), Ziffern oder Unterstrichen. Das erste Zeichen darf keine Ziffer sein. Groß- und Kleinschreibung wird unterschieden. Schlüsselwörter (wie z.B. long) dürfen nicht als Name verwendet werden.
Verständnisfragen
2.1 Ein Datentyp bestimmt
a) die Art der internen Darstellung der Daten.
b) die Größe des benötigten Speicherplatzes.
c) wie Daten auf dem Bildschirm angezeigt werden.
2.2 In C ist nicht festgelegt, ob der Typ char mit oder ohne Vorzeichen interpretiert wird.
Richtig
Falsch
2.3 Mit welchen der folgenden Datentypen können Gleitpunktzahlen dargestellt werden?
a) long
b) float
c) long double
2.4 In einem portablen Programm sollen in einer Variablen ganze Zahlen im Bereich von -100000 bis 100000 gespeichert werden. In der Deklaration der Variablen ist dann der Typ _________ zu verwenden.
2.5 Konstanten zur Darstellung des kleinsten und größten Wertes eines ganzzahligen Typs sind definiert in der Header-Datei
a) stdio.h
b) math.h
c) limits.h
2.6 Der Ausdruck
liefert die Größe eines Objekts vom Typ int in Anzahl
a) Bits.
b) Bytes.
c) Megabytes.
2.7 Bei einer Genauigkeit von 6 Dezimalziffern ist garantiert, dass die Zahlen 0.0123456 und 0.0123457 unterschieden werden.
Richtig
Falsch
2.8 In einem C-Programm repräsentiert die Konstante 0xFF
a) die Zeichen FF.
b) einen ungültigen Wert.
c) den dezimalen Wert 255.
2.9 Welche der folgenden Konstanten haben einen Gleitpunkttyp?
a) 7.
b) 70
c) 7E-1
2.10 Welche numerischen Werte repräsentieren folgende Konstanten?
a) 0 ________.
b) '0' ________.
c) '\0' ________.
2.11 Die Konstanten 'A' und "A" sind gleichwertig. Beide repräsentieren das Zeichen A.
Richtig
Falsch
2.12 Der String "Hi" belegt ____ Bytes.
2.13 Die Escape-Sequenzen \t und \n repräsentieren die Steuerzeichen __________________ und __________________.
2.14 Stringkonstanten, die nur durch Zwischenraumzeichen (Blanks, Tabs und Newline-Zeichen) getrennt sind, werden zu einem String zusammengezogen.
Richtig
Falsch
2.15 Bei welcher der Zeichenfolgen handelt es sich um einen gültigen Namen?
a) _A_
b) Hans-Otto
c) 1x
2.16 Welche der folgenden Deklarationen sind korrekt?
a) unsigned int n = -100;
b) char c = '\t';
c) float x = -12.345F
2.17 Bei der Definition einer lokalen Variablen ohne Initialisierung wird
a) der Typ und Name der Variablen festgelegt.
b) der Speicherplatz für die Variable reserviert.
c) der Anfangswert 0 der Variablen automatisch zugewiesen.
2.18 Jede globale Variable ohne explizite Initialisierung wird mit _____ vorbelegt.
2.19 Eine ganze Zahl vom Typ double soll mit der Funktion printf() dezimal angezeigt werden. Welches Formatelement ist richtig?
a) %c
b) %d
c) %f
2.20 Das Datenobjekt limit ist wie folgt definiert:
Welche Anweisungen sind zulässig?
a) int start = limit / 2;
b) printf("Grenzwert: %d\n", limit);
c) limit = 200;
Aufgaben
2.1 Bestimmen Sie den Typ folgender Konstanten.
a) 'X'
b) '\033'
c) 0.123456f
d) 512UL
e) 0x10F
f) 2e+10
g) 1.2345678
h) 0101
i) 0xAL
2.2 Schreiben Sie die Anweisungen, die exakt die folgenden Ausgaben erzeugen.
Hinweis: Verwenden Sie Escape-Sequenzen zur Ausgabe von Sonderzeichen oder Steuerzeichen.
a)
wobei die Einrückung mit zwei horizontalen Tabs erfolgen soll.
b)
und einen Ton, um die Aufmerksamkeit des Benutzers zu wecken.
2.3 Nicht alle der folgenden Variablendefinitionen sind korrekt. Welche Fehler liegen vor?
a) int INT = 0X100;
b) unsigned char code = 300;
c) short zeichen = '\\';
d) int 1i = 0, 2i = -1;
e) short gültig = 40000;
f) float Result = 1234.56789;
g) long long goto = 10000;
h) long file = "MeineBilder";
i) double top-left = 10.5;
j) long double size = 706*975;
2.4 Schreiben Sie ein C-Programm, das zwei Variablen für Gleitpunktzahlen initialisiert und ihre Werte am Bildschirm anzeigt. Anschließend berechnet das Programm die Summe, die Differenz, das Produkt und den Quotienten beider Zahlen und zeigt die Ergebnisse an.
2.5 Bestimmen Sie die Ausgabe des folgenden C-Programms, ohne das Programm auszuführen.
Hinweis: Eine ASCII-Code Tabelle ist hilfreich.
2.6 Schreiben Sie ein C-Programm, das die Größe des Speicherplatzes und den Wertebereich der Datentypen char und int anzeigt. Verwenden Sie die Konstanten CHAR_MIN, CHAR_MAX, INT_MIN und INT_MAX, die den kleinsten und größten möglichen Wert des jeweiligen Typs darstellen. Diese Konstanten sind in der Header-Datei...