| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > $i++ и ++$i |
| Автор: BIG BROTHER 11.2.2010, 11:09 | ||
Не очень понимаю логику вычислений. Выходит 7, но по моим расчетам там должно быть 5... Может я не очень понимаю как функционируют эти выражения? Насколько я знаю $i++ — производит вычисление, затем увеличение значения на единицу, ++$i — наоборот, сразу увеличивает. Я не прав? Как тогда работает конструкция "+=" (что она делает — я знаю, интересен порядок выполнения). |
| Автор: Ипатьев 11.2.2010, 11:22 |
| Как функционируют выражения, надо проверять другим кодом к примеру, чтобы выяснить, как функционирует $i++, надо написать код с $i++ логично? |
| Автор: MoLeX 11.2.2010, 12:23 | ||
5 будет вот так
|
| Автор: Guedda 11.2.2010, 12:36 | ||||||
| Получается так: 1. 1+2 = 3
2. 4+3 = 7
Вот так считается. Первое действие - до вычисления. Второе действие - после вычисления. Добавлено через 1 минуту и 59 секунд Даже заведем для этого еще одну переменную ($p),тогда
Вот так будет наглядней. |
| Автор: nerezus 11.2.2010, 13:37 | ||
BIG BROTHER, ты понимаешь, что запостил в раздел по профи примитивный вопрос по синтаксису?
http://ru.php.net/manual/en/language.operators.precedence.php Тему хотел переместить, но кто-то это уже сделал )) |
| Автор: awers 11.2.2010, 13:40 |
| http://www.php.net/manual/en/language.operators.increment.php |
| Автор: sTa1kEr 11.2.2010, 13:48 | ||||||||||
Выражение $i += N можно записать как $i = $i + N. Соответственно,
можно записать как:
Далее ++$i инкрементирует $i и возвращает $i, соответственно выражение можно записать как $i += 1 или $i = $i + 1
А $i++ наоборот, сначала возвращает значение $i, а затем инкрементирует его, в общем случае это можно записать как ($i = $i + N) - N, или ($i = $i + 1) - 1. // естественно PHP на самом деле ничего не вычитает, это только что бы смоделировать формулу
Ну а дальше все в соответствии с приоритетами:
http://php.net/operators.increment |
| Автор: Ипатьев 11.2.2010, 13:59 |
| Ну нет. Это далеко не примитивный вопрос по синтаксису. Скорее вопрос по работе компилятора. Если смотреть на код, а не на вопрос Гм. Раньше я видел другое объяснение. Объяснение sTa1kEr-а мне нравится больше |
| Автор: nerezus 11.2.2010, 14:12 |
| Ипатьев, ну в разделе по С++(к примеру) это был бы вопрос по компилятору, т.к. синтаксис не определяет ответ, и на C++ были бы верными ответы 5, 6, 7, 666. В PHP же это определено, но на практике применяется лишь дураками. Былинными дураками. Былинный - т.к. в реальной жизни таких не бывает. А вот откуда такой вопрос взялся - не понятно. Скорее всего какой-то сноб на собеседовании задал?) Совет топикстартеру: не ходи к ним, у них плохо. |