zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Welcher Typ von Operator ist der Divisionsoperator / (Ganzzahl oder Gleitpunkt)?

(12 + 0.0) / 7

Antwort:

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.

Gemischter Ausdruck Gotcha!

Betrachten Sie 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. Betrachten Sie diesen Ausdruck:

( 1/2 + 3.5 ) / 2.0

Was ist das Ergebnis? Wenden Sie 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

Fahren Sie 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 Sie die letzte Operation durch:

1.75

Dies ist dicht am Ergebnis, dass Sie irrtümlich erwartet haben könnten, wenn Sie beide Divisionen als Gleitpunkt-Operation betrachtet hätten. Ein heimtückischer Bug könnte in Ihrem Programm lauern!

FRAGE 12:

Sie wollen sicher einen weiteren probieren! Was ist das Ergebnis der Auswertung dieses Ausdrucks:

( a/b + 4) / 2

Vorausgesetzt, dass a 6 und b 12.0 enthält.