Path: utzoo!utgpu!water!watmath!clyde!rutgers!rochester!udel!burdvax!sdcrdcf!ism780c!news From: news@ism780c.UUCP (News system) Newsgroups: comp.lang.c Subject: Re: == vs = Message-ID: <8836@ism780c.UUCP> Date: 2 Feb 88 21:12:16 GMT References: <11523@brl-adm.ARPA> <1202@eneevax.UUCP> Reply-To: marv@ism780.UUCP (Marvin Rubenstein) Organization: Interactive Systems Corp., Santa Monica CA Lines: 36 In article <1202@eneevax.UUCP> noise@eneevax.umd.edu.UUCP (Johnson Noise) writes: > No. I don't understand what the big problem is about = and ==. >I made that mistake once and only once (it took 15 mins. to find it, but >I never did it again) when I was still learning the language. If I can >remember what to use when, I should think most people can. I decided to find out about the = and == problem by looking at an actual program written in C. I counted the number of assignment and equality operations that appeared in the source text of an experimental compiler that I have working on. Below are the statistics: 1455 assigns 422 equality compares 197498 total source characters. Now, if assign required two characters and compare required one, the compiler would have 1033 more characters in its source representation. I am a very slow typist (80 chars/min). Even so, having a two character symbol for assignment operator would have added only about 13 minutes to the total development effort for the compiler. On the other hand, I once received a bug report that was eventually traced to a single = appearing in in a comparison. The program in error was a C compiler! This error caused the compiler to generate a bad code sequence for certain obscure cases (one of the cases appeared in the FORTRAN compiler that was written in C). I leave it to you to guess the cost finding the bug, correcting the C compiler, recompiling every program in the system that had been developed with the compiler, and distributing a corrected system. My conclusion: if = had been chosen for the equality operator and any two character symbol (e.g. ::) had been chosen for the assignment operator, the cost of developing a program in C would be less even though the character count in a program might be 0.5% greater. Marv Rubinstein -- Interactive Systems