short circuit evaluation

drw at cullvax.UUCP drw at cullvax.UUCP
Thu Mar 12 05:30:53 AEST 1987


john at viper.UUCP (John Stanley) writes:
> If you have three expressions:
> 	1:  a+b+c
> 	2: (a+b)+c
> 	3:  a+(b+c)
> all three of them should not be evaluated the same way.  Greg implys that
> they should be.  This is not so.  When an equation contains '(' and ')'
> it intentionaly (and explicitly) defines the parse tree structure that will
> result.  The statement "redundant ()'s grow in C like mushrooms" may be true,
> but it doesn't give anyone the right to arbitrarily ignore explicit cues
> to the compiler.  When I don't care, I don't use them.  When I do, I do
> so for a reason..........

Read the opening paragraphs of section 3.3 of X3J11.  The compiler is
allowed to re-associate multiples uses of *, +, &, ^, and |.  If you
want to prevent this, you have to write:

	+(a+b) + c, etc.

The parentheses you wrote aren't explicit cues to the compiler, by
definition.  (*Why* X3J11 did this is another question...)

Dale
-- 
Dale Worley		Cullinet Software
UUCP: ...!seismo!harvard!mit-eddie!cullvax!drw
ARPA: cullvax!drw at eddie.mit.edu
Un*x (a generic name for a class of OS's) != Unix (AT&T's brand of such)



More information about the Comp.lang.c mailing list