https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61317
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Riley from comment #2) > "When postfix ++ is applied to an lvalue the result is the value of the > object referred to by the lvalue. After the result is noted, the object is > incremented in the same manner as for the prefix ++ operator. The type of > the result is the same as the type of the lvalue expression." Page 187, > "The C Programming Language" Kernighan and Ritchie, 1978 This just says what a++ does/is but it does not come into play here as we are doing the correct thing a++ just is it done before or after a-1 expression. C does not specify the order of execution if there is no sequence point. =, &, and [] are not sequence points.