Datentypen; Variable


In einem Computer werden zu verarbeitende Informationen im Speicher durch bestimmte Bitkombinationen in Variablen/Konstanten abgelegt. Jede Variable/Konstante hat dabei eine eigene Speicheradresse und ist von einem bestimmten Datentyp. Dieser Datentyp bestimmt,
wie eine gegebene Bitkombination interpretiert wird,
den Wertebereich, den Variablen/Konstanten dieses Typs annehmen können
die Operationen, die mit Operanden dieses Typs erlaubt sind und wie sie ausgeführt werden.
In diesem Praktikum soll vermittelt werden, dass jede Variable Speicher in bestimmter Länge an einer bestimmten Adresse belegt. Es sollen Techniken zur Eingabe von der Konsole sowie zur formatierten Ausgabe kennen gelernt werden.

Schreiben Sie ein C-Programm, das je eine Variable der eingebauten Datentypen
signed char, unsigned char
signed short, unsigned short
signed int, unsigned int
signed long, unsigned long
definiert.

Jede dieser Variablen soll über eine Eingabe von der Standardeingabe (Tastatur/Konsole) einen Wert zugewiesen bekommen. Die Eingabe erfolgt zunächst als Zeichenkette in einen Puffer vBuf. Danach erfolgt die Umwandlung in eine Zahl mit Hilfe der Funktionen atoi oder atol. Für Unsigned-Werte stellen diese Funktionen kein Optimum dar, für's Erste soll es aber so hingehen.
Für die Umwandlung von Werten des Typs float oder double kann die Funktion atof benutzt werden.

Die Ausgabe der Werte soll in dezimaler und hexadezimaler Form erfolgen, außerdem soll die Adresse ausgegeben werden. Dies erfolgt mit der Funktion printf.
printf und scanf arbeiten mit sogenannten Formatsteuerzeichen, diese beginnen immer mit einem Prozentzeichen. Aus dem Quelltext können Sie ersehen, für welche Datentypen die zugehörigen Formatsteuerzeichen verwendet werden.

Der Quelltext könnte in etwa folgendermaßen aussehen:



Erstellen Sie in Ihrem Praktikumsverzeichnis zu Programmierung 1 ein Arbeitsverzeichnis für dieses Praktikum prakt3 und wechseln Sie in dieses.
Erfassen Sie den Quelltext mit einem Editor Ihrer Wahl (kwrite, kate, vi ...).
Speichern Sie die Datei unter prakt3.c.
Kompilieren Sie "gcc -o prakt3 prakt3.c".
Wenn Sie gut gearbeitet haben, sollten Sie keine Fehlermeldungen erhalten.
Testen Sie Ihr Programm durch Aufruf von "./prakt3".
Fertigen Sie eine Skizze (mit Stift und Papier) an, in der Sie die Speicherplätze mit ihren Adressen und Werten aufzeichnen.
Testen Sie das Programm mit dem Debugger "kdbg". Hierzu müssen Sie Ihr Programm mit der Compileroption -g kompilieren (gcc -g -o prakt3 prakt3.c).

Zusatz: Ändern Sie das Programm in einer neuen Quelltextdatei (prakt3a.c) in nachfolgender Weise. Die Funktionen der Familie scanf sind sehr beliebt, weil sie viele Konvertierungen ermöglichen. Aber Vorsicht! dieses Programm birgt verborgene Fehler und funktioniert wahrscheinlich nicht erwartungsgemäß.

Merke:
Die Eingabe ganzahliger Werte ist über
fgets(vBuf,128,stdin); xyz=atoi(vBuf)
;
am sichersten und sollte immer in dieser Weise geschehen.

A. Beck