Welcher Typ von Operator ist der Divisionsoperator /
(Ganzzahl oder Gleitpunkt)?
(12 + 0.0) / 7
Gleitpunkt. Das Addieren der Gleitpunktzahl 0.0 zu der Ganzzahl 12 ergibt eine Gleitpunktzahl 12.0. Jetzt ist die Division eine Gleitpunktoperation, da einer der Operanden eine Gleitpunktzahl ist. Das ist ein gebräuchlicher Programmiertrick.
Betrachten wir noch einmal die Regel:
Wenn beide Operanden Ganzzahlen sind, dann ist die Operation eine Ganzzahloperation. Wenn einer oder zwei der Operanden eine Gleitpunktzahl ist, dann ist die Operation eine Gleitpunktoperation.
Die Regel muss Schritt für Schritt angewendet werden.Wir betrachten diesen Ausdruck:
( 1/2 + 3.5 ) / 2.0
Was ist das Ergebnis? Wir wenden die Regeln an: die innersten Klammern zuerst, innerhalb der Klammern der Operator mit der höchsten Präzedenz zuerst:
( 1/2 + 3.5 ) / 2.0 --- mache zuerst
Da beide Operanden Ganzzahlen sind, ist die Operation eine Ganzzahldivision und ergibt:
( 0 + 3.5 ) / 2.0
Wir fahren jetzt fort den Ausdruck innerhalb der Klammern auszuwerten. Der +
-Operator ist eine Gleitpunktoperation, da einer der Operanden eine Gleitpunktzahl ist, also ergibt der Klammerausdruck 3.5:
3.5 / 2.0
Schließlich führen wir die letzte Operation durch:
1.75
Dies ist dicht am Ergebnis, dass wir irrtümlich erwartet haben könnten, wenn wir beide Divisionen als Gleitpunkt-Operation betrachtet hätten. Ein heimtückischer Bug könnte in unserem Programm lauern!
Ihr wollt sicher einen weiteren probieren! Was ist das Ergebnis der Auswertung dieses Ausdrucks:
( a/b + 4) / 2
Vorausgesetzt, dass a = 6
und b = 12.0
.