Annotation of researchv10no/cmd/f2c/honorp, revision 1.1.1.1

1.1       root        1: From alice!dmr Wed Apr 11 09:08:05 EDT 1990
                      2: 
                      3: honorp (dmr) Wed Apr 11 01:46:18 1990
                      4: 
                      5:    There is confusion about the rearrangement rules in the K&R 1
                      6:    language and about how ANSI C changed things.  The wording in K&R 1
                      7:    wasn't precise enough in any event, but there was also a real
                      8:    change in content.
                      9: 
                     10:    K&R 1 said, "Expressions involving a commutative and associative
                     11:    operator (*, +, |, ^) may be rearranged arbitrarily, even in
                     12:    the parentheses; to enforce a particular order of evaluation
                     13:    an explicit temporary must be used."
                     14: 
                     15:    The exact intent of this statement was no more than this:
                     16:    "A compiler is entitled to regard mathematically commutative
                     17:    and associative operators as computationally commutative and
                     18:    associative."
                     19: 
                     20:    The imprecision of the original statement caused considerable worry,
                     21:    which still persists; for example it could be interpreted as saying that
                     22:           along+ashort+ashort
                     23:    or even
                     24:           (along+ashort)+ashort
                     25:    might add the shorts in short precision before adding the sum to the long.
                     26:    This wasn't the intent, and I don't think it's the practice.
                     27: 
                     28:    X3J11 decided not only to clarify the matter, but also to
                     29:    strengthen the requirements.  Its rule is that the value
                     30:    of an expression must be computed as if each subexpression
                     31:    in the parse (including the effects of parentheses) were computed
                     32:    as written. The temporal order of side effects remains undefined.
                     33: 
                     34: 
                     35: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.