Expression sequencing query
Dale Worley
drw at cullvax.UUCP
Thu Sep 25 06:08:32 AEST 1986
> In article <760 at oakhill.UUCP> tomc at oakhill.UUCP (Tom Cunningham) writes:
> > /* a = b + b + b */
> > a = ((b=1),b) + ((b=2),b) + ((b=3),b)
> >
> >I expected the result to be 6. With the Microsoft C compiler and the
> >compiler on the Sun 3, the result is 9. Apparently the parenthetical
> >assignments are all getting done before the comma and addition. Any
> >thoughts on this?
Harbison&Steele (7.11) makes it clear that an implementation must
evaluate one argument of a binary operator completely before starting
evaluation of the other argument. Thus, the result should be 6. I
don't know what the ANSI standard says.
Dec VAX Ultrix gives 9.
Lattice C 3.00 for MS-DOS gives 7!!! (Yes, that's "7", not a typo!)
Dale
More information about the Comp.lang.c
mailing list