On 13 Jun 2009, at 14:27, Alexander Klenin wrote:

On Sat, Jun 13, 2009 at 22:47, Jonas Maebe<jonas.ma...@elis.ugent.be> wrote:

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.

Round itself does not cause any error, as it returns an int64. It's the assignment of the result of round() to your longint variable that triggers the range check (error).


Jonas
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to