lkml.org 
[lkml]   [1999]   [Mar]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [OFFTOPIC] Re: A bit off-topic ... (fwd)
Date
From
> On Wed, 31 Mar 1999, Rivalino Matias Junior wrote:
>
> > Okay. Try in C++ compiler (e.g. g++). I'm using g++ in this case.
>
> #include <stdio.h>
>
> void main() {
> int x = 0;
> int y = 1;
>
> x = (y) ? x = 1 : x = 2;
> printf("%d\n", x);
> }
>
> I believe that gcc/egcc are buggy here - your code _should_ be legal.
> Also, whatever version of g++ you are using is _also_ buggy - it should be
> generating code to produce 1, not 2, but it is not.

Um... Is it correct? I thought there was some rule about multiple
assignments to the same lvalue between sequence points.

I believe there is a sequence point after the evaluation of the lhs of
the ?: operator, but I don't know about after the evaluation of the rhs.

The expression may be undefined.

I can't think of any reasonable interpretation that would yield 2,
however...

(Is : alone an operator? Somewhere I remember it being a bitfield or
strange scoping operator. In that case, it may be interpreting it as

x = ((y) ? (x = ((1:x) = 2)));

which I could see interpreted as 2, in some bizzare sense.)

> I understand how ?: works. What I said was that gcc/egcc would not compile
> this line:
> x = (y) ? x = 1 : x = 2;
> But if you change it like this:
> x = (y) ? (x = 1) : (x = 2);
> then gcc/egcc don't give you an error. Try the same workaround in your own
> compiler, or upgrade it.

This makes it sound like some evaluation order misunderstanding.

>
> --Jeff
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.rutgers.edu
> Please read the FAQ at http://www.tux.org/lkml/

--
Buddha Buck bmbuck@acsu.buffalo.edu
"Just as the strength of the Internet is chaos, so the strength of our
liberty depends upon the chaos and cacaphony of the unfettered speech
the First Amendment protects." -- A.L.A. v. U.S. Dept. of Justice


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:51    [W:0.241 / U:0.376 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site