[lkml]   [1999]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: fork() Problem?
    Richard B. Johnson writes:
    > On Wed, 5 May 1999, Steve VanDevender wrote:
    > > Richard B. Johnson writes:
    > > > > if (pid = fork())
    > > > ^^^^________ logical test of an assignment? This will always
    > > > be true!
    > >
    > > No. An assignment expression has the value of the value
    > > assigned. This allows expressions like a = b = c ('=' is
    > > right-associative). It will be true if the assigned value is
    > > true (nonzero), and false if the assigned value is false (zero).
    > >
    > > However, it is generally more clear and less error prone to make
    > > such tests explicit (i.e. (a = b) != 0).
    > No. Definitely not! The gcc compiler 'fixes' very obvious and
    > awful bugs.

    Have you ever actually bothered to learn C or read the standards
    documents? This isn't the first time you've demonstrated your
    ignorance about fairly basic C behavior.

    This is not a 'bug' that gcc fixes. All properly
    standard-compliant C compilers behave this way because it is the
    defined standard behavior for the assignment operator.

    To quote the C Reference Manual (which is also the ANSI C
    Standard document) in _The C Programming Language, Second
    Edition_ by Kernighan and Ritchie:

    A7.17 Assignment Expressions

    There are several assignment operators; all group right-to-left.

    unary-expression assignment-operator assignment-expression

    assignment-operator: one of
    = *= /= %= += -= <<= >>= &= ^= |=

    All require an lvalue as left operand, and the lvalue must be
    modifiable: it must not be an array, and must not have an
    incomplete type, or be a function. Also, its type must not be
    qualified with const; if it is a structure or union, it must not
    have any member or recursivly, submember qualified with const.

    The type of an assignment expression is that of its left
    operand, and the value is the value stored in the left operand
    after the assignment has taken place.

    So an assignment expression does have a value, and consequently
    can be legally used as a conditional expression in if, while, do,
    or for statements.

    In the future, Richard, please trouble yourself to do some real
    research rather than treating your personal opinions as
    incontrovertible facts.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:51    [W:0.022 / U:17.036 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site