Welcher Typ von Operator ist der Divisions-Operator "/" (Ganzzahl oder Gleitpunkt)?

(12 + 0.0) / 7

Eine gute Antwort wäre:

Gleitpunkt. Das Addieren der Gleitpunktzahl 0.0 zu der Ganzzahl 12 ergibt eine Gleitpunktzahl 12.0. Jetzt ist die Division eine Gleitpunkt-Operation, 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 Ganzzahl-Operation. Wenn einer oder zwei der Operanden eine Gleitpunktzahl ist, dann ist die Operation eine Gleitpunkt-Operation.

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 Ganzzahl-Division und ergibt:

( 0 + 3.5 ) / 2.0

Fahren Sie jetzt fort den Ausdruck innerhalb der Klammern auszuwerten. Der + -Operator ist eine Gleitpunkt-Operation, 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 9:

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.

Inhaltsverzeichnis