[fpc-devel] Overflow checks differ between constants and variables

Martin Frb lazarus at mfriebe.de
Mon Apr 21 08:29:10 CEST 2014


In the below example range and overflow checks are off.

The "a-b" line gives the result "2". (As expected after the overflow)

Doing the same operation with constants, does not compile, due to an 
overflow error (despite $Q-). Why?

program Project1;
{$R-}{$Q-}
var a, b: qword;
begin
   a := 1;
   b := qword($ffffffffffffffff);
   writeln(a-b);
   writeln( qword(1) - qword($ffffffffffffffff) );    // 
project1.lpr(7,21) Error: Overflow in arithmetic operation
   readln;
end.




More information about the fpc-devel mailing list