Здравствуйте Silver_s, Вы писали:
SS>post decrement/increment должен выполняться после вычисления значения выражения, но что нужно понимать под выражением?
SS>Или стандартом не оговорено когда надо делать пост операции?
Не оговорено. Все побочные эффекты должны возыметь место до следуюшей точки следования. Точнее сказать нельзя.
Постинкремент означает, что в выражении будет использовано значение переменной
до инкремента. А когда кокретно поизойдет сам инкремент — никто не знает. Инкремент, если так захочет компилятор, может произойти даже
до использования значения переменной в выражении.
Например, вот такой С++ код
int a, b;
...
a = b++ + 5;
компилятор, если захочет, может странслировать вот в такой результирующий код
mov eax, b
inc b
add eax, 5
mov a, eax
т.е. собственно инкремент переменной 'b' делается еще
до того, как будет выполнено сложение с 5 и переменная 'a' получит новое значение. Тем не менее код ведет себя так, как должен вести себя именно
постинкремент.