in reply to $i=$i++

Perl and GCC seem to be on different wavelengths, that's for sure. I'd tend to agree more with the Perl implementation than the GCC one, but the GCC one probably has a good reason for being that way. In either case, you are heading into some pretty dangerous territory, not unlike Star Trek when they travel in a nebula. Smoke comes out of things that smoke isn't supposed to come out of, and random objects in the bridge blow up for no apparent reason.

Here's a comparison of some typical behaviour:
Expression Perl GCC ---------------------------- x = ++x 1 1 x = x++ 0 1 x = x++ + x++ 1 1 x = x++ + ++x 2 3 x = ++x + x++ 3 3 x += x++ 1 1 x -= ++x 0 0
It is clear there is a slight difference as to when the trailing increment is actually executed.