for loop

Gale Paeper gpaeper at empirenet.com
Sun Feb 18 08:50:56 CET 2018



> On Feb 17, 2018, at 10:13 PM, Paul Isaacs <paul at redpineinstruments.org> wrote:
> 
> Hello all,
> 
> GPC 20060325 based on gcc-3.4.4
> 
> for i:= -1 to -1 do writeln( i );
> 
> produces:
> -1
> 0
> 
> Is this correct?

It isn't correct.  If you look at the Pascal and Extended Pascal ISO standards paragraph 6.8.3.9 For-statements (same for both standards) you'll see the specification of a for statement has the following:

Apart from the restrictions imposed by these requirements, the for-statement

for v := e1 to e2 do body

shall be equivalent to

begin
temp1 := e1;
temp2 := e2;
if temp1 <= temp2 then
 begin
 v := temp1;
 body;
 while v <> temp2 do
   begin
   v := succ(v);
   body
   end
 end
end

Thus, when the initial-value of the control-variable is equal to the final-value the for-statement body should be executed exactly one time.

Gale Paeper
gpaeper at empirenet.com






More information about the Gpc mailing list