Version [22588]
Dies ist eine alte Version von ProzProg3DatentypenOperatoren erstellt von RonnyGertler am 2013-03-27 16:30:37.
Prozedurale Programmierung - Kapitel 3 - Datentypen und Operatoren
Inhalte von Dr. E. Nadobnyh
Begriffdefinition
Daten sind logisch gruppierte Informationseinheiten, die übertragen oder gespeichert werden können.
Verschiedene Arten von Daten werden durch den so genannten Datentyp bestimmt. Daten werden dabei in einer speziellen Bitcodierung abgelegt. Ein Datentyp ist die Zusammenfassung von Wertebereichen und die zulässigen Operatoren.
Die Datentypen ermöglichen es einem Compiler zu überprüfen, ob der Programmierer richtige Operatoren für die Berechnung von Daten angegeben hat.
C/C++ ist eine streng typisierte Programmiersprache. Jedes der folgenden Sprachkonstrukten hat einen festen Datentyp, der nicht geändert werden kann: Variablen, Konstanten, Literale, Objekte.
Klassifikation
Es gibt einfache und benutzerdefinierte Datentypen.
1. Benutzerdefinierte Datentypen müssen im Programm vor der Verwendung definiert werden.
2. Einfache (elementare, primitive, eingebaute, vordefinierte) Datentypen sind in der Sprache eingebaut und können in 2 Gruppen aufgeteilt werden:
- Numerische Datentypen (Zahlentypen)
- Ganzzahlen und
- Gleitkommazahlen.
- Nicht numerische (alphanumerische) Datentypen
- Wahrheitswerte und
- Zeichen.
Beschreibung eines Datentyps
Zur Beschreibung eines Datentyps gehören: Wertebereiche, Operatoren, Speicherbedarf, Konstruktionsregeln von Variablen, Konstanten und Literale.
Jede Dateneinheit benötigt Platz im Speicher. Je mehr Platz verfügbar ist, desto mehr Informationen lässt sich darin ablegen.
Der Bereich der darstellbaren Werte hängt davon ab, wie viele Bytes für den Datentyp reserviert werden.
Das Rechnen ist die namensgebende Aufgabe des Rechners. Wenn man mit dem Rechner rechnen will, sollte man die Arbeitsweise und die Grenzen den eingebauten Datentypen kennen.
Zahlentypen
Ganzzahlen und Gleitkommazahlen werden von der Hardware unterschiedlich unterstützt.
1. Ganzzahlen werden mit weniger Platzbedarf gespeichert und werden schneller als Gleitkommazahlen verarbeitet. Die gebräuchliche interne Darstellung ganzer Zahlen ist die Zweierkomplementdarstellung.
2. Gleitkommazahlen werden durch eine Mantisse und einen Exponenten dargestellt. Im Gegensatz zu den ganzzahligen Typen können die Zahlen im Gleitkommaformat nicht immer exakt dargestellt werden. Die Gleitkommatypen unterscheiden sich nicht nur in der Größe des Wertebereichs, sondern auch in der Genauigkeit der Darstellung.
⇒ Demo 1.
3.1. Ganzzahlige Datentypen
Ganze Zahlen
Ganzzahlige Typen unterstützen zwei Arten von Zahlen:
1. Die natürlichen Zahlen sind die beim Zählen verwendeten Zahlen. Sie umfassen alle Zahlen:
0, 1, 2, 3, 4, …
2. Als ganze Zahlen bezeichnet man die natürlichen Zahlen unter Hinzunahme der negativen Zahlen. Sie umfassen alle Zahlen:
…−2, −1, 0, 1, 2, …
Natürliche Zahlen bilden die Untermenge der ganzen Zahlen. Jede ganze Zahl wird im Computer exakt dargestellt.
Zahlenbereiche
Es gibt verschiedene Typen von ganzen und natürlichen Zahlen:
Typ | Größe in Bytes und Wertebereich | |
short | 2 | - 32 768 bis 32 767 |
unsigned short | 2 | 0 bis 65 535 |
int | 4 | - 2 147 483 648 bis 2 147 483 647 |
unsigned int | 4 | 0 bis 4 294 967 295 |
Datentypen „long” und “unsigned long” können die Größe von 4 oder 8 Bytes haben. Die tatsächlich verwendete Anzahl von Bytes variiert je nach Rechnersystem. Die Zahlen-bereiche sind in der Standardbibliothek (limits.h) zu finden.
⇒ Demo 2. Ganzzahlentypen
Ganzzahlige Literale
Literale sind durch folgende Beispiele dargestellt:
Datentyp | dezimal | oktal | hexadezimal |
int | 255 | 0377 | 0xFF |
unsigned int | 65535U | 0177777 | 0xFFFF |
long | 10L | 012L | 0xAL |
unsigned long | 27UL | 033UL | 0x1BUL |
Ganzzahlige Variablen und Konstanten
Um Variablen und Konstanten zu definieren, werden spezielle Schlüsselwörter verwendet: int, short, long, const.
Durch “unsigned” werden Variablen für natürliche Zahlen (ohne Vorzeichen) definiert.
Beispiele:
int a= -3;
unsigned short b = 65 534U;
const int c=5;
Operatoren für ganze Zahlen
1. Traditionelle arithmetische Operatoren
+ - | Vorzeichenoperatoren (unär) |
+ - * / |
Addition, Subtraktion, Multiplikation, Division (binär) |
% | Modulo-Operator (binär) |
Diese Operatoren haben ganzzahlige Operanden und auch ganzzahliges Ergebnis. Deswegen wird der Rest der ganzzahligen Division abgeschnitten. Bei Bedarf kann der Rest mit dem Modulo-Operator ermittelt werden.
Beispiel: für int a=9, b=5; ist a/b gleich 1 und a%b gleich 4.
2. Kombinierte Zuweisungen (erweiterte arithmetische Operatoren, Kurzform-Operatoren), z.B.:
a += b; bedeutet a = a + b;
3. Inkrement- und Dekrement -Operatoren (unär)
a++ | Postfix-Inkrement |
a-- | Postfix-Dekrement |
++a | Präfix-Inkrement |
--a | Präfix-Dekrement |
Die ganzzahlige Variable „a“ ist der Operand des Operators.
Alle vier Operatoren verändern den Wert des Operandes
und liefern den Wert des Operandes als Ergebnis zurück.
Unter Inkrementierung wird Addition von 1 verstanden, unter Dekrementierung die Subtraktion von 1.
Präfix-Operator liefert den veränderten Wert. Postfix-Operator liefert den ursprünglichen Wert.
4. Vergleichsoperatoren (relationale Operatoren) Diese Operatoren sind binär.
< | kleiner als |
> | größer als |
<= | kleiner als oder gleich |
>= | größer als oder gleich |
== | gleich |
!= | ungleich |
CategoryProzProg