проходил сегодня собеседование

Mols

Новичок
Вурдалак
хм... ну может быть.
На столько стандартами не владею.
Но как-то всё равно странно звучит. Особенно не понятно почему это поведение "типичное" и относится только к "стандартизованным"
 

Вурдалак

Продвинутый новичок
Автор оригинала: Mols
Особенно не понятно почему это поведение "типичное" и относится только к "стандартизованным"
— сказали «типичный пример». См. K&R, §2.12:
... В любом выражении, в котором возможны побочные эффекты, присутствует зависимость от порядка использования переменных в вычислениях. Одна из типичных ситуаций представлена следующим оператором:
PHP:
a[i] = i++;
Проблема связана с тем, что неизвестно, какое значение индекса i используется для обращения к массиву — старое или новое.
У PHP, насколько я знаю, нет стандарта, есть только одна конкретная реализация языка — на php.net. Соответственно, проблем с переносимостью (в рамках одной версии, во всяком случае) у такого кода не будет. На C/C++ подобный код различными компиляторами может «пониматься» по-разному.
 

dr-sm

Новичок
Автор оригинала: Mols
phprus
Эм... а почему не определённого? Афаир С++ разбирал и выполнял выражение справа налево. Всё было понятно.
Пых слева направо... тоже вроде всё понятно.
Но действительно, на практике абсолютно не пригодилось)
вот тут нормал разжевано почему.
 

phprus

Moderator
Команда форума
Mols
Не определено по тому, что значения выражения попадают в переменные не сразу, а в определенных контрольных точках. Внутри выражения контрольных точек нет, по этому при изменении одной и той-же переменной в пределах выражения не известно, когда на самом деле компилятор поместит измененное значение в переменную.
К примеру в коде
Код:
i = 5;
a = ++i; <<--
при вычислении выражения, значение которого попадет в "а" значение ++i будет равно 6 (и оно попадет в "a"), однако в этот момент значение переменной i все-еще может быть 5. После прохождения контрольной точки (роль которой здесь играет ; ) во всех переменных будут правильные значения (a = 6, i = 6);
 

Sherman

Mephi
Вопросы из серии php puzzles как и любые puzzles - это не то, о чем мы говорили 2-3 страницы назад.

Есть простые вопросы на знание фундаментальных основ, а есть головоломки. С моей точки зрения, вторыми можно баловаться в свободное от работы время на braingames.ru, например.

Спросить простую задачку про комбинаторику, например, это нормально. Спросить задачку из олимпиады по теорверу уже лишнее, имхо. Хотя кто-то и спрашивает(Goog, ya).

ТС как раз спрашивали НЕ головоломки, а тривиальные вещи, на которые он не смог ответить, поэтому его не взяли.
 
Сверху