From: wtanksle@sdcc10.ucsd.edu (William Tanksley)
Subject: Re: Programming language vote - results
Date: 1997/11/25
Date: 1997-11-25T00:00:00+00:00 [thread overview]
Message-ID: <65di3v$730$1@news1.ucsd.edu> (raw)
In-Reply-To: 347440AD.35DF@idt.net
In article <347440AD.35DF@idt.net> trs@idt.net writes:
>[big snip]
>> > Simple example from real life:
>> > if (call_this() || call_that());
>> I find myself using a construct like this a lot recently (snipped directly
>> from code I'm working on right now):
>> if(!to && !(to = malloc(sizeof *to)))) return(NULL);
>All of these constructs are flat out wrong. As far as I can remember,
>neither C or C++ guarantees that the clauses in a condition will be
>evaluated in the order you wrote them. IOW,
According to the ANSI standard and K&R, as well as universal prior
practice, the boolean logical operators are short-circuiting. This means
that they MUST exectute in order. In fact, this is required explicitly by
ANSI and K&R.
>The malloc example *probably* has enough parentheses to force it to work
>in the right order but the fact is that the code is obscure at best and
>wrong at worst. It is also no more efficient when compiled than the
>equivalent construct:
It'll work, so long as the library returns zeroes for nulls. I personally
find it more readable than its stretched alternative, although for most
other purposes I'd use the stretch.
>if (!call_this())
> call_that();
>Which, incidentally, is one *less* key stroke if you use a tab for the
>indent. Count 'em - I added four and deleted 5.
But then, I use an editor which is made to cut down on such keystrokes.
But who's counting.
>I would not accept this code at a walkthrough.
I'd have to see the surrounding design -- the malloc example looks
dismaying, but there might be a reason which I can't imagine to not know
and not care whether a pointer was initialized.
The if( this() || that() ); example I would toss right out -- but then
I've NEVER seen that written anywhere. this() || that(); works exactly as
well, and doesn't tempt the code maintainer to assume that the semicolon
was a typo.
It's worth noting that using the short circuiting of 'or' is very common
in many languages. Note some of the nicer aspects of Perl: "open file or
die". Now THAT'S an idiom -- and me a good Python man :).
>Terry Richards
-Billy
next prev parent reply other threads:[~1997-11-25 0:00 UTC|newest]
Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <343fbb5a.0@news.iprolink.ch>
1997-10-11 0:00 ` Programming language vote - results Gary L. Scott
1997-10-12 0:00 ` Jack Rudd
1997-10-13 0:00 ` Robert Munck
1997-10-13 0:00 ` Gary L. Scott
1997-10-13 0:00 ` Jack Rudd
1997-10-13 0:00 ` safetran
1997-10-13 0:00 ` Jack Rudd
1997-10-14 0:00 ` Philip Brashear
1997-10-14 0:00 ` Gary L. Scott
1997-10-13 0:00 ` FRS DES
1997-10-13 0:00 ` Gary L. Scott
[not found] ` <3442B745.5352@lmco.com>
1997-10-15 0:00 ` Gary L. Scott
1997-10-16 0:00 ` James Giles
1997-10-16 0:00 ` Andrew Haley
1997-10-13 0:00 ` David Ness
1997-10-14 0:00 ` Randy MacDonald
1997-10-14 0:00 ` Jan Karman
1997-10-15 0:00 ` Alan E & Carmel J Brain
1997-10-15 0:00 ` D'Arcy J.M. Cain
1997-10-15 0:00 ` Mark Stephen
1997-10-17 0:00 ` Randy MacDonald
1997-10-15 0:00 ` FRS DES
1997-10-16 0:00 ` Randy MacDonald
1997-10-16 0:00 ` Alan E & Carmel J Brain
1997-10-16 0:00 ` John Sullivan
1997-10-17 0:00 ` Alan E & Carmel J Brain
1997-10-17 0:00 ` John Sullivan
1997-10-17 0:00 ` Randy MacDonald
1997-10-16 0:00 ` FRS DES
1997-10-17 0:00 ` Jerry van Dijk
1997-10-17 0:00 ` Randy MacDonald
1997-10-20 0:00 ` Alan E & Carmel J Brain
1997-10-20 0:00 ` FRS DES
1997-10-21 0:00 ` Alan E & Carmel J Brain
1997-10-20 0:00 ` Lawrence Kirby
1997-10-20 0:00 ` Kaz
1997-10-21 0:00 ` Alan E & Carmel J Brain
1997-10-23 0:00 ` Ada Readability (Re: Programming language vote - results) Ray Blaak
1997-10-21 0:00 ` Programming language vote - results Alan E & Carmel J Brain
1997-10-21 0:00 ` Randy MacDonald
1997-10-22 0:00 ` Don Guinn
1997-10-29 0:00 ` Randy MacDonald
[not found] ` <01bce1bf$5c2baaa0$95b66bcf@dkelly.ark.com>
1997-10-29 0:00 ` FRS DES
1997-10-29 0:00 ` Don Guinn
1997-10-29 0:00 ` Shmuel (Seymour J.) Metz
1997-10-31 0:00 ` Documenting Code (was:Programming language vote - results) Alan E & Carmel J Brain
1997-10-30 0:00 ` Charles Lin
1997-10-30 0:00 ` James L. Ryan
1997-10-31 0:00 ` Robert Bernecky
1997-10-31 0:00 ` Robert Bernecky
1997-11-01 0:00 ` Randy MacDonald
1997-11-01 0:00 ` Robert Dewar
1997-11-03 0:00 ` Jon S Anthony
1997-10-25 0:00 ` Programming language vote - results Alan E & Carmel J Brain
1997-10-26 0:00 ` functionality of Java (was Re: Programming language vote - results) Randy MacDonald
1997-10-23 0:00 ` Programming language vote - results Jack Rudd
1997-10-25 0:00 ` Alan E & Carmel J Brain
1997-10-25 0:00 ` Kaz
1997-10-26 0:00 ` FRS DES
1997-10-27 0:00 ` Robert Bernecky
1997-10-27 0:00 ` APL argument W. Wesley Groleau x4923
1997-10-28 0:00 ` Randy MacDonald
1997-10-28 0:00 ` Programming language vote - results Jan Karman
1997-10-28 0:00 ` Robert Bernecky
1997-10-28 0:00 ` James L. Ryan
1997-10-29 0:00 ` Robert Bernecky
[not found] ` <bosworth-2910972044300001@access59.accsyst.com>
1997-10-30 0:00 ` Robert Bernecky
1997-10-30 0:00 ` James L. Ryan
1997-10-31 0:00 ` Robert Bernecky
1997-10-31 0:00 ` James L. Ryan
1997-10-29 0:00 ` Jack Rudd
1997-10-25 0:00 ` Peter Seebach
1997-11-18 0:00 ` Ingemar Ragnemalm
1997-11-18 0:00 ` firewind
1997-11-18 0:00 ` Kevin Swan
1997-11-19 0:00 ` Alan E & Carmel J Brain
1997-11-18 0:00 ` Larry Elmore
1997-11-20 0:00 ` firewind
1997-11-19 0:00 ` Mike Smith
1997-11-19 0:00 ` Matt
1997-11-20 0:00 ` firewind
[not found] ` <3474C71B.536B12F6@cgocable.net>
1997-11-21 0:00 ` CVigue
1997-11-23 0:00 ` Lawrence Kirby
1997-11-24 0:00 ` FRS DES
1997-11-20 0:00 ` Terry Richards
1997-11-20 0:00 ` Andy Knight
1997-11-23 0:00 ` Alex Krol
1997-11-25 0:00 ` William Tanksley [this message]
1997-11-26 0:00 ` Ron Natalie
1997-11-27 0:00 ` William Tanksley
1997-11-27 0:00 ` Lawrence Kirby
[not found] ` <65keij$mkd$1@nerd.apk.net>
1997-11-27 0:00 ` Kaz Kylheku
1997-11-28 0:00 ` Shmuel (Seymour J.) Metz
1997-12-01 0:00 ` FRS DES
1997-11-20 0:00 ` Coding for Obscurity Alan E & Carmel J Brain
1997-11-20 0:00 ` Stephan Wilms
1997-11-21 0:00 ` Jos A. Horsmeier
1997-11-23 0:00 ` Al Christians
1997-11-23 0:00 ` Alex Krol
1997-11-24 0:00 ` Jim Johnson
1997-11-24 0:00 ` Mark Wilden
1997-11-26 0:00 ` Robert S. White
1997-11-26 0:00 ` Miguel Carrasquer Vidal
1997-12-01 0:00 ` ISONE
1997-12-01 0:00 ` ISONE
1997-11-26 0:00 ` Mark Wilden
1997-11-26 0:00 ` Leon Jones
1997-11-26 0:00 ` Ron Natalie
1997-11-27 0:00 ` Joerg Rodemann
1997-11-26 0:00 ` Lawrence Kirby
1997-11-27 0:00 ` Richard A. O'Keefe
1997-11-24 0:00 ` Richard A. O'Keefe
1997-11-24 0:00 ` Matt
1997-11-24 0:00 ` Ed Falis
1997-11-24 0:00 ` Samuel T. Harris
1997-11-24 0:00 ` Jon S Anthony
1997-11-25 0:00 ` Samuel T. Harris
1997-11-20 0:00 ` firewind
1997-11-20 0:00 ` Jos A. Horsmeier
1997-11-20 0:00 ` Programming language vote - results Andy Knight
1997-11-20 0:00 ` firewind
1997-11-18 0:00 ` Lawrence Kirby
1997-11-24 0:00 ` Martin M Dowie
1997-11-25 0:00 ` Kaz Kylheku
1997-11-26 0:00 ` Peter Seebach
1997-12-02 0:00 ` ANDREAS LEITNER
1997-12-02 0:00 ` Robert Dewar
1997-12-02 0:00 ` Lawrence Kirby
1997-12-03 0:00 ` Billy Chambless
1997-12-03 0:00 ` Robert Dewar
1997-12-05 0:00 ` John Sullivan
1997-11-25 0:00 ` Mark Wilden
1997-11-25 0:00 ` Martin M Dowie
1997-11-26 0:00 ` Lawrence Kirby
1997-11-26 0:00 ` FRS DES
1997-11-18 0:00 ` Kevin Swan
1997-11-29 0:00 ` Ingemar Ragnemalm
1998-09-10 0:00 ` Steven Katz
1997-11-19 0:00 ` Peter Seebach
1997-11-19 0:00 ` Alan E & Carmel J Brain
[not found] ` <01bcdad2$fa9fdf60$25a43a91@basil.omroep.nl>
1997-10-17 0:00 ` D'Arcy J.M. Cain
1997-10-17 0:00 ` Robert I. Eachus
1997-10-13 0:00 ` Robert S. White
1997-10-13 0:00 ` Gary L. Scott
1997-10-13 0:00 ` Matthew Heaney
1997-10-14 0:00 ` Gary L. Scott
1997-10-19 0:00 ` William Rapp
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox