Fun C typos (was *p++ = *q++)

Michael Stanley jms at hcx.uucp
Sat Feb 18 04:53:35 AEST 1989




In article <EJP.89Feb16173101 at faron.icd.abnet.COM>, ejp at faron.icd.abnet.COM (Ed Prochak) writes:
> In article <15908 at mimsy.UUCP> chris at mimsy.UUCP (Chris Torek) writes:
> >   In article <1184 at houxs.ATT.COM> beyer at houxs.ATT.COM (J.BEYER) writes:
> >   >for(i == 0; ...
> >   >
> >   >Now the funny thing was that i was seldom equal to zero on entry to this
> >   >loop, so it started at FALSE or 0 almost always. But once in a while
> >   >i did == 0, so the loop would start at TRUE sometimes. TRUE is not 0 in
> >   >our implimentation. Very  vexing to find.
> >
> >   This is not the proper group for this, but I have to say *something*.
> >   That is not how for loops work in C, and the true-value of any comparison
> >   operator in *any* correct C compiler is 1 (not -1, not 17, not 42, 1).
> >   The latter in particular in a common misconception, probably left over
> >   from FORTRAN (and BASIC) systems that used -1 as .TRUE..
> >   -- 
> >   In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163)
> >   Domain:	chris at mimsy.umd.edu	Path:	uunet!mimsy!chris
> >


I never saw the original letter that included the code segment:

	for(i == 0; ...

But...  The argument above just doesn't make sense.  The piece of code
between the left paren and the first semicolon of the for statement
EVALUATES to a boolean true or false, BUT NO VARIABLE ASSIGNMENT IS MADE!
So I don't see how the fact that i == 0 evaluates to true or false makes
any difference.  Now the fact that i was not properly initialized in the
for loop...

Sorry about including an extra unnecessary level of message indirection
above, but I couldn't locate a copy of the original message and so just
copyied a piece of a response message instead.

	Michael Stanley



More information about the Comp.lang.c mailing list