Theory of Pure C, chapter 937

utzoo!decvax!harpo!ihnp4!iwsl1!deg utzoo!decvax!harpo!ihnp4!iwsl1!deg
Thu Jan 6 12:21:05 AEST 1983


Problem:
 foo( x++ * x )

Data: (according to "The C Programming Language" K&R)
 p. 185: "expressions involving a commutative and associative
	operator ( *,+,&,|,^) may be rearranged arbitrarily by the
	compiler."
	so the x++ may be evaluated before or after the other x

 p. 187: "[for postfix ++] After the value is noted, the III) evaluate x (second x)
     evaluate x (first x)
     pass value of X*X to function
     after function returns store X+1 in x
     (if foo changes x, the change is lost)
     (This would require a bizzare compiler, but, I think, is legal)

I think all other possible linearizations produce one of the
above results.

David Good
(iwsl1!deg)



More information about the Comp.lang.c mailing list