[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