down
Richard A. O'Keefe
ok at quintus.uucp
Mon Dec 12 17:41:09 AEST 1988
In article <gables.352 at umigw.miami.edu> slores%gables.span at umigw.miami.edu (Stanislaw L. Olejniczak) writes:
> while ( (c = getchar) != EOF)
> chcnt++ += (c == '\n');
No way is this too complex for a compiler. It is just plain illegal.
chcnt is a 'long' _variable_ (L-value), but chcnt++ is a 'long' _number_
(R-value). The first time round, chcnt would be 0, then chcnt++ increments
chcnt to 1 and evaluates to 0. What would "0 += (c == '\n') mean?
Try
chcnt++, chcnt += c=='\n';
Better still would be to use a for loop:
for (chcnt = 0; (c = getchar()) != EOF; chcnt++) {
if (c == '\n') chcnt++;
}
or
for (chcnt = 0; (c = getchar()) != EOF; chcnt += c == '\n' ? 2 : 1)
;
(Was that really (c = getchar), or was it (c = getchar())? If the former,
that's wrong too.)
More information about the Comp.lang.c
mailing list