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]
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to