comma operator: keep away?
Peter da Silva
peter at ficc.uu.net
Mon Apr 24 23:53:51 AEST 1989
In article <1104 at aplcen.apl.jhu.edu>, bink at aplcen.apl.jhu.edu (Ubben Greg) writes:
> In article <2179 at pur-phy> (Sho Kuwamoto) writes:
> > for(i=0, p=head; p->next != NULL; i++, p=p->next)
> People too often cram expressions in the for(;;) that are not related
> to the loop control, just to avoid a couple of extra lines.
I dispute that's the motivation in this case. But putting the i=0 and i++
in the loop you're providing extra information: that the variable 'i' is
tightly bound to the loop, and may be serving as a manufactured loop index.
The alternative:
i = 0;
for(p=head; p->next != NULL; p=p->next)
{
...
i++;
}
implies that 'i' might not be bound to the loop, and also means that you
would have to special-case any 'continue' statement in the expression if it
is so bound.
if(gottagetouttahere)
i++, continue; /* :-> */
(Yes, I know you can't do that).
--
Peter da Silva, Xenix Support, Ferranti International Controls Corporation.
Business: uunet.uu.net!ficc!peter, peter at ficc.uu.net, +1 713 274 5180.
Personal: ...!texbell!sugar!peter, peter at sugar.hackercorp.com.
More information about the Comp.lang.c
mailing list