PDA

View Full Version : Variable is continuously assigned 0?



jstemper
02-10-2017, 02:51 AM
So whenenever I run the following, i is assigned 0 at line 11, and i don't understand why
program new;

function LtoXP(level: Integer): integer;
var
temp, i: Integer;
begin
if (level < 1) then exit(-1);
i := 1;
while (i < Level) do
begin
temp += floor(i + 300 * pow(2, i / 7));
//temp := temp + floor(i + 300 * pow(2, i / 7));
inc(i);
writeln(i);
end;
result := floor(temp / 4);
end;

begin
writeln(IntToStr(LtoXP(15)));
end.

I change the statement to the equivalent longer version and it no longer does it

function LtoXP(level: Integer): integer;
var
temp, i: Integer;
begin
if (level < 1) then exit(-1);
i := 1;
while (i < Level) do
begin
//temp += floor(i + 300 * pow(2, i / 7));
temp := temp + floor(i + 300 * pow(2, i / 7));
inc(i);
writeln(i);
end;
result := floor(temp / 4);
end;

Kasi
02-10-2017, 03:40 AM
You're trying to do Integer += Float, So you're probably getting undefined behaviour. Try casting it to Integer first. I doubt there's an overload for Integer += Float.

jstemper
02-10-2017, 04:04 AM
You're trying to do Integer += Float, So you're probably getting undefined behaviour. Try casting it to Integer first. I doubt there's an overload for Integer += Float.

Works, thanks Kasi

for anyone interested temp += Integer(floor(i + 300 * pow(2, i / 7)));