Delphi: Az abszolút érték függvény egy furcsa tulajdonsága
Programozással kapcsolatos cikkek / Delphi (2018 katt)
A Delphiben az Abs függvény szolgál egy szám abszolút értékének meghatározására. A függvény használata során egy (látszólag) furcsa dolgot tapasztalhatunk, melyet az alábbi (console application) programmal lehet demonstrálni:
program AbsProba;
{$APPTYPE CONSOLE}
uses
SysUtils;
var sh1,sh2 : shortint;
in1,in2 : smallint;
begin
sh1:=-128;
sh2:=Abs(sh1);
Writeln(sh1, ', ' ,sh2);
in1:=-32768;
in2:=abs(in1);
Writeln(in1, ', ', in2);
Readln;
end.
Kiírt értékként (az abszolút érték függvénynek megfelelő) -128, 128 és -32768, 32768 helyett -128, -128-at és -32768, -32768-at kapunk, ami természetesen nem helyes.
A dolog magyarázata a Delphi adattípusainak tulajdonságaiban rejlik. Mivel egy shortint típusú változó értékei -128-tól 127-ig, egy smallint típusú változó értékei pedig -32768-tól 32767-ig terjednek, ezért az eredményül kapott +128 illetve a +32768 nem ábrázolható shortint-ként, illetve smallint-ként, tehát a kapott eredmények nem is lehetnek helyesek.
Előző oldal | Kapitány |