Excessive optimization (was Re: what was VMS/OpenVMS written in?)

Fred Cisin cisin at xenosoft.com
Thu Dec 2 18:01:50 CST 2010


On Thu, 2 Dec 2010, Ethan Dicks wrote:
> I think you are imagining it backwards.  A for loop continues *until*
> the condition is true. (i > 10 or some such).  A _missing_ conditional
> test is always false, so the loop test will never satisfy, so the loop
> will never exit on its own (which is why a break or a processor reset
> is needed to break out of it).

Close.
A for loop will continue *until* the condition is NOT true.

for (i=0; i<10; i++)  {  /*something*/ .  .  .  }
on the first 10 passes, the condition is true, as i is, indeed, less than
10.


> > I've seen it written as while (1); or while (1) {}.
> Those are correct as written, but they are a different keyword with a
> different sense on the test.  A while loop continues _as long as_ the
> test is true.  1 is never 0, so it's always true.

I have been told many times (someday I'll learn never to believe what I am
told!) that some compilers actually preprocess for's into while's  or
vice-versa, before compilation.  It is certainly trivial to replace either
one with the other in almost all cases.






More information about the cctech mailing list