[fpc-pascal] Hint converting to int64

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Tue Sep 11 18:50:44 CEST 2018


On 11/09/18 16:15, Santiago A. wrote:
> El 11/09/18 a las 12:30, Mark Morgan Lloyd escribió:> On 11/09/18 10:15, 
> Santiago A. wrote:>> Hello:FPC: 3.0.4 (Realease from Lazarus 1.8.4 SVN: 
> 57972)OS: Windows7 >> 32bits / Linux 64Bits>> I have this code and I get 
> a hint>> ---------- var  Entity:Longword;FullParagraph:string; 
> pIni:Integer; >> begin .... 
> Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== >> Hint .... end; 
> ----------->> Hint: Converting the operands to "Int64" before doing the 
> add could >> prevent overflow errors.I can't see why it mentions int64, 
> there are >> integer and longword variables, but no Int64 one.>> There 
> is you know.>> 
> https://www.freepascal.org/docs-html/current/ref/refsu4.html#x26-250003.1.1 
>  >
> 
> ----------var   Entity:Longword;   FullParagraph:string;   
> pIni:Integer;begin   ....   
> Entity:=Entity*10+ord(FullParagraph[pIni])-48; // <=== Hint   ....end; 
>   -----------Do you mean that Entity is promoted to int64 in a 32bits 
> system?

The operands Entity*10 and 10+ord(FullParagraph[pIni])-48 are both 32 
bits, but the addition could overflow. The compiler writer's trying to 
be nice to you, quit kvetching :-)

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-pascal mailing list