Bei Konstanten muss man höllisch aufpassen dass einem die implizite Typkonvertierung die Berechnung nicht kaputtmacht. Das kann man aber nicht dem TIA anlasten.
Beispiel:
Code:
INTvar := 10;
REALvar := INTvar * 3600;
Hier wird die Multiplikation auf dem Datentyp Integer durchgeführt, und erst bei der Zuweisung in eine Real-Zahl konvertiert. Da das Ergebnis von 10*3600 nicht mehr vom Wertebereich Integer abgedeckt wird gibt es einen Überlauf. In REALvar steht dann -29536.0 (was wahrscheinlich nicht so geplant war).
Wenn man also Konstante hingegen 3600.0 schreibt, erkennt der Compiler die unterschiedlichen Typen und konvertiert INTvar vor der Multiplikation in eine Real-Zahl.
Das trifft auch für alle anderen numerischen Datentypen zu. Bei der 1200 gibt es beispielsweise den Typ USINT (8-Bit Ganzzahl).
Bei
USINTvar = 100;
INTvar = USINTvar * 100;
wird die Multiplikation ebenfalls auf USINT mit dem bei diesen Werten daraus resultierendem Bereichs-Überlauf durchgeführt.