Цитата(ARV @ Jun 24 2009, 11:39)

я бы сказал, что ++Х изменяет переменную ДО, а Х++ ПОСЛЕ того, как ее значение будет использовано для вычисления выражения.
К сожалению это написано во многих учебниках по программированию, что позже приводит в недоумение программистов.
Все, что можно сказать по поводу инкрементов - так это то, что
значением выражения ++X является X увеличенный на единицу, а
значением выражения X++ является X. Это все, что можно сказать об их значении. Увеличение же значения X может произойти когда угодно, и до, и после, единственное, что можно утверждать со всей определенностью - что после
точки следования его значение будет увеличено. Когда именно это произойнет - неизвестно, компилятор может сам решить когда это ему удобнее.
Цитата(ARV @ Jun 24 2009, 11:39)

и это не имеет никакого отношения к операции присваивания, которая ВСЕГДА выполняется ПОСЛЕ того, как ВСЕ ВЫРАЖЕНИЕ ЦЕЛИКОМ вычислено.
Операция присваивания - это тоже часть выражения, и когда оно будет выполнено сказать невозможно. Разумеется, в выражении
x=a+b сложение скорее всего будет выполнено до присваивания (хотя это тоже не факт

), но в выражении
x = ++a ничего сказать невозможно. Например, компилятор может считать
а в регистр, увеличить его, а затем записать в
x. После этого он может занести это увеличеное значение в
а, а может вновь считать его из
а, вновь инкрементировать и записать обратно. Причем мне кажется, что если
а объявлено как volatile, то он именно так и поступит, хотя это выглядит несколько глупо.