lkml.org 
[lkml]   [1999]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    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.

    assignment-expression:
    conditional-expression
    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 majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.tux.org/lkml/

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