Mathieu Lacage wrote: > oh, well, it looks like the difference here is in the type of the > variable. i.e., the following code generates different output > depending on the #if on top with gcc (no C++ involved). I am so > surprised that I have to ask: is this really expected behavior ? ISO/IEC 9899:1999 (E) 6.5 Expressions 1 An expression is a sequence of operators and operands that specifies computation of a value, or that designates an object or a function, or that generates side effects, or that performs a combination thereof. 2 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.70) 70) This paragraph renders undefined statement expressions such as i = ++i + 1; a[i++] = i; while allowing i = i + 1; a[i] = i; Andrew.