lkml.org 
[lkml]   [1999]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
DateThu, 6 May 1999 08:01:00 +0100
FromSteve Dodd <>
Subject[OFFTOPIC] Re: fork() Problem?
On Wed, May 05, 1999 at 09:28:22PM -0400, Richard B. Johnson wrote:

> That said, the problem with:
>
> if(a=b)
>
> is that the value of a is not tested. 'a' got assigned the value of
> 'b', but only the assignment was tested, not the resulting value.

Argh. No. No, no, no, no.

The value of 'a=b' is the value of 'b' (which is also the value of 'a' after
the assignment). What do you mean, the "assignment was tested"?

You'd expect

int a, b, c = 4;

a = b = c;

to work, just as well as a = ( b = c ), wouldn't you? It's *exactly* the
same thing. There's nothing magical about an if/else construct.

> This, as I explained over and over again, is called a
> "boolean test of assignment error". It is a real error because,
> unless the machine crashed, it is always TRUE. This is what

No, it's true only if the value being assigned is true. This is the way K&R
C works, the way ANSI C works, and the way ANSI C++ works. Any other standard
which works any other way is defining a different language, not C.

> Lint is complaining about. One needs to test the result.

The result _is_ tested. Show me any standard that thinks you're right. Or
any compiler for that matter.

> |_____ sequence point

Sequence points have sod all to do with this.

I do hope you don't write C code for anything critical. You don't seem
to be very familiar with the language.

Maybe you'd better stick to ADA. *sigh*

--
"His mind is like a steel trap -- full of mice"

-
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    [from the cache]
©2003-2010