Hi
1) p[h] defaults to zero
2) the value of h can exceed the array size
3) In BP 7, If you modify the index inside a for-loop the results are undefined After you exit the for-loop the index is undefined unless you exited with a goto
in C, You can mdify the index inside the for-loop The value of the index is visable after you exit the loop (ref K&R 2nd Ed, p61)
So what does the Pascal specs say? (I wish I had a copy of each)
Russ russwhit@mind.net ----------
From: Frank Heckenbach frank@g-n-u.de To: gpc@gnu.de Subject: Re: posible bug question... Date: Friday, May 19, 2000 10:17 AM
Richard Sharman wrote:
Frank Heckenbach writes: | Norberto Alfredo Bensa wrote: | The problem is the following: You use a for loop counter (h) after | the loop, and in Pascal this is undefined (this might be one of the | most despised features of Pascal, but it has its reasons). | Therefore, it's quite possible that one compiler does what you want | and another compiler (or another version of the same compiler) | doesn't. |
Isn't it also wrong to attempt to modify a FOR loop index variable inside the body for the FOR statement?
Yes, it is. I'd missed that one. (Using a while loop will avoid this problem as well, of course.)
for h := 1 to j-1 do if 2*p[h]>i then h := j { <------- } else if i mod p[h]= 0 then break;
I thought this was not allowed in Pascal, but I see gpc accepts it.
I agree, GPC should check this more strictly (at least give a warning).
Frank
-- Frank Heckenbach, frank@g-n-u.de, http://fjf.gnu.de/ GPC To-Do list, latest features, fixed bugs: http://agnes.dida.physik.uni-essen.de/~gnu-pascal/todo.html