warning: operation on 'zero' may be undefined
Paul Schlie
schlie@comcast.net
Fri Oct 1 21:46:00 GMT 2004
Sorry couldn't resist, nothing to do "good fortune" as although:
i = (i = 1) ; may be redundant, it's certainly not ambiguous.
Just as i = (i = i + 1) may be considered similarly, and logically
equivalent to the supposedly ambiguous i = ++i expression.
-paul-
Dave Korn wrote:
> Paul Schlie wrote:
>> Yes, fully agree; and since the expression's value is insensitive
>> to the order of evaluation of it's sub-expression arguments, it's
>> unambiguous; just as i = ++i is unambiguous, as it's sub expression
>> argument values are not interdependent. The lhs computes the an lvalue,
>> which is independent of it's referenced content rvalue; just as the
>> lvalue of x is independent of the rvalues of a, b, or c, which are in
>> turn have values which are independent of each other's evaluated rvalues.
>
> The two cases are not equivalent. In both, you have TWO assignments,
> not one; in the case of "i = ++i", it is mere good fortune that they are
> assigning the same value to i, rather than two entirely different values,
> as is the case in "i = (++i) % 3" for any value of i >= 3.
More information about the Gcc
mailing list