Аномалия инкремента и декремента?

Vasiliy_Lomov

Новичок
Аномалия инкремента и декремента?

Объясните пожалуйста почему в этих примерах в первом и втором результат 18 ?

Во втором примере я предполагаю вычисление происходит вот так 10 + 8 = 18
А в первом примере тоже 18 но вычисление не поддается логике почему такой результат ?

PHP:
$a = 10;
echo $a + --$a;

$a = 10;
echo $a-- + --$a;
 

Adelf

Administrator
Команда форума
Вообщет в обоих случаях я думаю получается 9+9.

З.Ы. никогда в реальном коде так не балуюсь. Детство все это.
 

damngood

Мозг был, но ушел...
Потому что в обоих случаях вычисления одинаковы=)

-~{}~ 21.12.09 13:27:

$a = 10;
echo $a--;
echo --$a;

Преинкремент и постинкремент в гугле
 

Vasiliy_Lomov

Новичок
Автор оригинала: damngood
Потому что в обоих случаях вычисления одинаковы=)

-~{}~ 21.12.09 13:27:

$a = 10;
echo $a--;
echo --$a;

Преинкремент и постинкремент в гугле
Все верно результаты 10 и 8 именно об этом я и говорил.
Но основной вопрос почему

$a = 10;
echo $a + --$a

тоже 18
 

Krishna

Продался Java
Все верно результаты 10 и 8 именно об этом я и говорил.
Но основной вопрос почему

$a = 10;
echo $a + --$a

тоже 18

Надо полагать потому, что приоритет у -- выше, чем у +, соответственно она отрабатывает первой.

В отличие от $a--, --$a не создаёт временной копии в памяти, а сразу декрементирует переменную. Ну и поскольку переменная при вычислении итогового значения выражения используется одна и та же - имеем такой результат.
 

Vasiliy_Lomov

Новичок
Автор оригинала: Krishna
Надо полагать потому, что приоритет у -- выше, чем у +, соответственно она отрабатывает первой.

В отличие от $a--, --$a не создаёт временной копии в памяти, а сразу декрементирует переменную. Ну и поскольку переменная при вычислении итогового значения выражения используется одна и та же - имеем такой результат.
Спасибо за дельный ответ.
 

Фанат

oncle terrible
Команда форума
triumvirat, не переживай так сильно
со временем поймешь ;)
 
Сверху