Hello! On Wednesday 16 November 2005 00:26, Ryan Mansfield wrote: >>> ... if I have an >>> expression and somewhere in that expression, I use an increment >>> (decrement) operator on a variable, I can not mention that variable >>> elsewhere in the expression. >> >> I think, that this is wrong. The exact rule should be more like "...if >> the result of the operation is not defined by standard..." > > The exact rule is in section 5.1.2.3 Paragraph 2 I just wanted to give a "rule of thumb". To help fellow programmers to avoid that trap. Granted, my "rule of thumb" is not 100% correct but if you adhere to it, you avoid most of the problematic uses of ++ and --. And it's easy to remember. :-) I think, a lot easier than what I found here: http://c0x.coding-guidelines.com/6.5.html | Between the previous and next sequence point an object shall have its stored | value modified at most once by the evaluation of an expression. | Furthermore, the prior value shall be read only to determine the value to be | stored. | Except as specified later, the order of evaluation of subexpressions and the | order in which side effects take place are both unspecified. What about rephrasing the "rule" as: "If I have an assignment and somewhere in that assignment, I use an increment (decrement) operator on a variable, I should not mention that variable elsewhere in the assignment". Cheers Daniel