Re[2]: Когда происходит post increment?
От: flyker Россия  
Дата: 30.04.02 10:23
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>Здравствуйте 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' получит новое значение. Тем не менее код ведет себя так, как должен вести себя именно постинкремент.


Позволю не согласится

оператор + есть функция от двух переменных
перепишем его в виде plus(a, b)
таким образом
a++ + b
эквивалентно
plus(a++, b)
а здесь уже a+1 внутрь передаваться не будет никогда.
Может я чего-то не понимаю ???
Все гениальное — просто
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.