This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
RE: warning: operation on 'zero' may be undefined
- From: Paul Schlie <schlie at comcast dot net>
- To: <gcc at gcc dot gnu dot org>
- Date: Fri, 01 Oct 2004 15:11:36 -0400
- Subject: RE: warning: operation on 'zero' may be undefined
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.