On Sat, Jun 13, 2009 at 22:47, Jonas Maebe<[email protected]> wrote: > > On 13 Jun 2009, at 13:31, Alexander Klenin wrote: > >> Currently, Round and Trunc functions ignore the state of $OVERFLOWCHECKS >> compiler directive. The following code prints "-2 -2": > In Borland-speak, these are not overflow errors, but range errors. Turn on > range checking, and you will get an error.
Yes, this works. > The difference between range and overflow errors is as follows: > * range errors occur when an implicit type conversion occurs from one type > to another (e.g., when assigning, or when using it as a parameter), and the > value is not legal for the destination type > * overflow errors occur when performing a mathematical operation on a value > and the result cannot be represented in the type used for performing this > operation (this "operation type" depends both on the target platform and the > types of the operands) It is debatable whether "Round" is an operation or conversion, but I agree that this is a minor thing -- the important one is that there is a way to guard against overflows. -- Alexander S. Klenin _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
