Precedent for use of =

Root Boy Jim rbj at icst-cmr
Wed Jul 9 01:45:48 AEST 1986


> They already did.  Let me quote K&R, p.17:
> 
>   The double equals sign == is the C notation for "is equal to" (like
>   Fortrans's .EQ.).  This symbol is used to distinguish the equality
>   test from the single = used for assignment.  Since assignment is about
>   twice as frequent as equality testing in typical C programs, it's
>   appropriate that the operator be half as long.

And since `if' clauses are twice as frequent as `else' clauses, the
former token should be half the length of the latter :-)

> Personally, I still prefer := for assignment and = for equality over = and ==.

Then you would mistype `a = b' instead of `a := b'.

> I also think that the keystroke argument is ridiculous (flames to /dev/null). 

Me too. Since most statements are one to a line, requiring `;' is kind of
redundant. Make newline imply `;' unless the statement is incomplete,
such as a control statement or unbalanced parens, or dyadic operators
at the end of line. Use `;' to jam multiple statements on one line.
As always, `\' newline is ignored.

> The problem with = and == is further aggravated by the
> fact that in C an assignment is an expression and not a statement, so
> that code like

Since this feature is only in C, LISP, APL, (& others I don't know about)
and not in FORTRAN, BASIC, PASCAL, COBOL, PL/I (?), two separate operators
are required in the formers, and only suggested in the latters. One
FORTARN compiler (DEC?) (U Md.'s RALPH?) would even convert 
`IF (A = B)' into `IF (A .EQ. B)' for you.
> 
>   if (i = 0) {
>     /* do something */
>   }
>   else {
>     /* do something else */
>   }
> 
> is legal C and usually  /* does something else */   than you expected  :-)

Yes, only one branch (or none), or loop forever (or not at all).
I find these easy to fix.

> Despite that, I would never call Messrs K&R idiots, as Niklaus Wirth has
> been labeled in a recent message (not the one I am responding to):
> I think both C and Pascal have been reasonable designs of programming
> languages and important contributions to the computing community.

Aw, c'mon, is that all the response my statement generated. Let me try
again. Dennis Ritchie is like Jerry Garcia: subtle and sweet,
while Nickels Worth is like Jimmy Page*: obvious and without any taste.

> Robert Marti, Sun Microsystems, Inc.
> 
> UUCP: ...{cbosgd,decvax,decwrl,hplabs,ihnp4,pyramid,seismo,ucbvax}!sun!rmarti
> ARPA: rmarti at sun.com

	(Root Boy) Jim Cottrell		<rbj at icst-cmr.arpa>
	Is it clean in other dimensions?

* if you are a `Led Head', then substitute `Mark Farner' for `Jimmy Page'.



More information about the Comp.lang.c mailing list