Expression sequencing query

Gary McKenney gbm at galbp.UUCP
Fri Sep 26 22:54:48 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?
> >
> Tom, I agree, the result should be 6, as defined by K&R, but I have tried
> it on a Cyber 180/830 running NOS VE, and get 9, also AT&T's 3B5
> System V, gets 9, But A copy of the Small-C Compiler that I have ported
> comes up with a 6.  Does this seam to imply that Small-C is a better
> (more accurate) compiler, than those that AT&T produces?  I find it
> totally unaccepable that AT&T can not produce a working C compiler.
> I would like everyone to test it on as many machines as prossible, to
> see if we can find as least ONE other besides Small-C, that works.
> 
> Mike Stump  ucbvax!hplabs!csun!csunb!beusemrs

You are both wrong.  All expressions in lowest set of parenthesis are evaluated
first from left to right, therefore before any addition occurs b = 3.
a = 3 + 3 + 3;

gbm



More information about the Comp.lang.c mailing list