Systemnahe Programmierung in Chome Systemnahe Programmierung in C: Semantik von Ausdrücken Prof. Dr. Uwe Schmidt FH Wedel

Semantik von Ausdrücken

weiter

weiter

Ganzzahlige Arithmetik

Modulo-Arithmetik
Arithmetik immer modulo Länge der Operation
weiter
merke
Kein Überlauftest
merke
Die signifikantesten Stellen werden vergessen
weiter
Operanden-Längen
und
Vorzeichenbehandlung
Längenanpassung
Regeln
1.
ein Operand vom Typ long
Operation in der Länge von long
2.
sonst
Operation in der Länge von int
weiter
merke
Arithmetik immer in int oder long int
merke
Nie Arithmetik mit der Länge von char
merke
Nie Arithmetik mit der Länge von short, wenn int nicht wie short implementiert ist.
merke
Implizite Längenanpassung der Operanden vor der Operation
Vorzeichenbehandlung
Regeln
1.
ein Operand vom Typ unsigned
Operation vorzeichenlos
2.
sonst
Operation vorzeichenbehaftet
weiter
merke
Implizite Konversionen der Operanden
defensive Programmierung
merke
die Konversionsregeln sind gegenüber dem C-Standard noch vereinfacht!
Im Standard sind die Regeln so kompliziert, dass sie völlig unverständlich werden.
also:
merke
Ausdrücke mit unterschiedlichen Typen nicht mischen.
merke
Längen und Vorzeichen der Operanden durch explizite Konversionen festlegen.
weiter
Längenanpassung
bei Zuweisungen
1.
Längen der Typen der rechten und linken Seite gleich
möglicherweise Vorzeichen angleichen
2.
Länge des Typs der linken Seite kleiner als die Länge des Typs der rechten Seite
Signifikante Bits werden abgeschnitten
3.
Länge des Typs der linken Seite größer als die Länge des Typs der rechten Seite
Vorzeichenbehaftete oder vorzeichenlose Erweiterung des Wertes in Abhängigkeit des Typs der rechten Seite
für fehlerhaftes Mischen von vorzeichenbehafteten und vorzeichenlosen Ausdrücken
weiter

weiter

Fließkomma-Arithmetik

Operanden-Längen
Längenanpassung
Regeln
1.
ein Operand vom Typ long double
Operation in long double
2.
ein Operand vom Typ double
Operation in double
3.
sonst
Operation in float
weiter
K&R C
Fließkomma-Arithmetik immer in double
weiter

weiter

Auswertungsreihenfolge und Prioritäten

Reihenfolge
der Auswertung von Teilausdrücken, auch für Parameter von Funktionsaufrufen ist nicht festgelegt.
weiter
Ausnahmen
logische Operatoren, bedingte Ausdrücke und Ausdrucksfolgen
weiter
merke
Vorsicht mit Zuweisungen in Ausdrücken
Auswertungsreihenfolge
merke
Auswertungsreihenfolge: 2. Beispiel
merke
Vorsicht mit indirekten Seiteneffekten über Funktionsaufrufe
merke
Vorsicht mit Prioritäten: 16 Prioritätenstufen
Beispiel
weiter

Letzte Änderung: 09.11.2010
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel