Date: Tue, 4 Feb 1997 20:58:43 +0100 From: j@uriah.heep.sax.de (J Wunsch) To: freebsd-chat@freebsd.org (FreeBSD chat list) Subject: Re: cvs commit: CVSROOT avail Message-ID: <Mutt.19970204205843.j@uriah.heep.sax.de> In-Reply-To: <3.0.32.19970204121616.00ba8e30@dimaga.com>; from Eivind Eklund on Feb 4, 1997 12:16:17 %2B0100 References: <3.0.32.19970204121616.00ba8e30@dimaga.com>
index | next in thread | previous in thread | raw e-mail
As Eivind Eklund wrote:
> >> or at least
> >> if ( bar && (foo = *bar))
> >>
> >> (as opposed to:
> >> if ( bar && foo = *bar)
> >>
> >> in complicated conditionals.
> >
> >That's actually a _really_ bad example, as it only makes sense with
> >guaranteed left-to-right evaluation 8)
>
> ... which is quite all right, as ANSI guarantee left-to-right evaluation
> for "&&", "||", "," and "?:" (the conditional is evaluated before the
> result - weird, uh? ;)
Except, the latter of the both is of course wrong. :-)
j@uriah 130% cat foo.c
int
mumble(void)
{
int foo;
char *bar;
if (bar && foo = *foo) {
return 1;
}
return 0;
}
j@uriah 131% cc -c foo.c
foo.c: In function `mumble':
foo.c:7: invalid type argument of `unary *'
SEE ALSO
/usr/share/misc/operators
:-)
(The assignment has less priority than the &&, hence that statement
tried to assign something to the expression ``bar && foo''.)
--
cheers, J"org
joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Mutt.19970204205843.j>
