ZmeyeeD wrote:Aга, именно такие специалисты по порядку операций задают на интервью вопросы типа
int a = 5;
int b = 6;
int c = a+++b--;
Чему равно с?
Неверно. Специалисты, которые в состоянии отличить точку следования от дырки в земле, на интервью таких вопросов на задают. А если вдруг и задают, то уж совсем не для того, чтобы проверить вас в роли живого лексически-синтаксического анализатора.
ZmeyeeD wrote:И если бы только на интервью! Неделю назад переписывал код, написанный таким "специалистом" по порядку операций - ошибочка вошла в одном из ++-- и система падала случайным образом. Когда я спросил, "WTF, кто написал это", мне ответили, что этот "специалист" уже не работает в конторе.
Вы вы и сами привели пример ситуации, в которой умение разбираться в таком коде является весьма полезным.
ZmeyeeD wrote:Код должен быть понятным с первого взгляда, по возможности. Первоначальный код топикстартера с первого взгляда не понятен (и не ясно, что он делает, если нет комментариев). Приносить читаемость кода в жертву производительности там, где производительность модуля не критична (а это в большинстве случаев происходит) - нельзя.
Вы являетесь жервой некоего заблуждения. Не существует никакой разницы в производительности между `*++s` и парой `++s; *s;`. Оба варианта элементарнейшим образом делают одно и то же и, поэтому, при использовании любого уважающего себя компилятора, будут порождать одинаковый машинный код. Люди, которые пишут выражения вида `*s++` делают это не из соображений повышения производительности (от таких иллюзий избавляются еще в детском саду).
Люди, которые пишут подобные выражения либо считают, что это в данном кокретном случае лучше (в т.ч. выразительнее и удобочитаемее), либо считают, что именно так всегда и надо писать на С, ибо это "C way". Вторая категория - это, без сомнения, заблудшие овечки, которых надо срочно спасать. Что касается первой категории, то при определенном уровне профессионализма эти люди соврешено правы, в том числе и с точки зрения удобочитаемости. Нет никаких сомнений в том, что удобочитаемость предполагает некий оптимальный уровень компакности/краткости, отклонение от которого в любую сторону приводит к менее читаемому коду. Подобные фичи языка С, будучи применнными в уместной степени в уместных конетекстах, существенно повышают выразительность и удобочитаемомть кода, а не понижают ее.