![]() |
|
Модераторы: LSD |
![]()
|
|
| ZZZkoderZZZ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 11.3.2013 |
Был на собеседовании в одной программистской компании. Спросили чему будет равно i после такой операции
А вы знаете чему будет равно i ? |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону |
Если компания нормальная, то от тебя ждали, что ты скажешь, что это - UB
Это сообщение отредактировал(а) borisbn - 11.3.2013, 13:51 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| kuzulis |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 |
Охххх.. Ну и кандибобрик...
Не, я понимаю там, задания-шманания - но не до такой же степени. Вот я к примеру бы нифига не ответил а просто покрутил бы у виска и ушел с гордо поднятой головой |
|||
|
||||
| NoviceF |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону |
лурк в курсе проблемы
http://lurkmore.to/%2B%2Bi_%2B_%2B%2Bi и вот тоже в тему http://ru.wikipedia.org/wiki/%D0%A2%D0%BE%...%BD%D0%B8%D1%8F Это сообщение отредактировал(а) NoviceF - 11.3.2013, 18:39 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 |
Я сказал, что я так не пишу и поэтому не знаю.
Надо спросить у того, кто этот код писал. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия |
Это вопрос на знание ЭЛЕМЕНТАРНЫХ ПОДВОДНЫХ КАМНЕЙ С++. Если ты не знаешь результат этой операции (рафинированной, кстати), то как ты определишь проблему в более сложном случае?
Этот вопрос используется для получения представления об опыте и интересах потенциального сотрудника. Если сотрудник не интересуется языком, не читает книжки, не обсуждает на форумах проблемы, то это говорит о том, что он не ту профессию выбрал. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 |
Можно пример такой (более сложной) ситуации? Это сообщение отредактировал(а) Alca - 12.3.2013, 01:06 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону |
> Можно пример такой (более сложной) ситуации?
Открой исходники буста. Или, хотя бы, STL -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия |
Но есть более интересный пример:
|
||||
|
|||||
| sergioK1 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 |
Стандартный вопрос на интервью для жуниорской позиции, prefix/posfix оператор, команды обрабатываться с лева на право, что интресного то :- следующий вопрос который стоит это что будет в случае с потоками, |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
||||
|
||||
| ZZZkoderZZZ |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 11.3.2013 |
Так есть ли конкретный ответ на все эти вопросы, или это всё таки undefined behavior? Может быть будущий младший кодер-эникейщик должен привести ответы для MS и gcc со всеми комбинациями ключей? А далее при правильном ответе его спросят что будет, если в программе 100 потоков. Как ответить правильно? А если немного усложнить
Это сообщение отредактировал(а) ZZZkoderZZZ - 12.3.2013, 11:59 |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону |
я имел в виду просто "более сложная ситуация". ИМХО разобраться в бусте или STL - существенно сложнее, чем определить UB в такого рода коде -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
Это UB, толко вот UB в данном случае этоо unspecified (не undefined, а unspecified) behavior. Другого ответа нет (по крайней мере правильного). Разница все таки есть.
|
||||||
|
|||||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону |
смотри мой самый первый ответ. а если точнее, то (6.5 clause 2 of C language standard - обрати внимание - не Си++, а Си. В первом дольше искать)
Ессно, никто в здравом уме не будет требовать от тебя знание номера раздела стандарта и точной формулировки, но если ты своими словами объяснишь, что это - UB, то ИМХО, этого д.б. достаточно -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
|
||||
|
|||||
| ZZZkoderZZZ |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 11.3.2013 |
Здесь кажется всё ясно. Всё равно сначала инкрементировать, а потом прибавить 1, или сначала прибавить 1, а потом инкрементировать. Поэтому i в этой строке увеличится на 2. |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
||||
|
||||
| ZZZkoderZZZ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 11.3.2013 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия |
Компилятор умеет оптимизировать код. Таким образом, фактическая запись i+1 после операции ++i может произойти после операции i = (i+1) + 1. В итоге результат будет i+1, например:
По стандарту, так писать нельзя. если ты так пишешь, то все риски берешь на себя. |
|||
|
||||
| sergioK1 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 |
читай про prefix/postfix, это то что требуют чтобы жуниор знал, в той фирме и в других , если ты не знаешь это то дальше говорить c тобой никто не станет, |
||||||
|
|||||||
| ZZZkoderZZZ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 11.3.2013 |
sergioK1
Я знаю что такое prefix/postfix. Но должен ли я знать что выдаст приведенный некорректный пример и от чего зависит получение разных результатов? Результатов там может быть много, и они зависят от компилятора, ключей компиляции, и еще много от чего. Даже в разных местах одной и той же программы этот пример может дать разные результаты - читайте http://lurkmore.to/%2B%2Bi_%2B_%2B%2Bi.
И значит младший кодер-эникейщик должен рассмотреть все варианты? Какие же тогда требования к старшему кодеру? Это сообщение отредактировал(а) ZZZkoderZZZ - 12.3.2013, 15:22 |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london |
пример некорректен, но не потому что UB а потому что ты выходишь за пределы массива: 0 2 3 3 - запрашиваемые индексы Извеняюсь, не заметил i = 0; в таком случае пример корректен, но строки будут разные, индексы: 0 2, 1 1. Забавно, что читал про постфикс/префикс и всеравно не знаешь что выведет программа. Это сообщение отредактировал(а) sQu1rr - 12.3.2013, 15:23 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
||||
|
||||
| sQu1rr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london |
Да, 01
ссылка Стоп Я что-то пропустил? Перечитываю Это сообщение отредактировал(а) sQu1rr - 12.3.2013, 16:33 |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
sQu1rr
Ну и что это нам дает?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия |
странно. А у меня gcc при любых опциях компиляции выдает 10... Почему бы это? |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения |
bsa, он еще и предупреждает плюс ко всему
http://liveworkspace.org/code/2zwVZO$0 Это сообщение отредактировал(а) azesmcar - 12.3.2013, 16:39 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва |
||||
|
||||
| NoviceF |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону |
Ещё статья от Алёны на тему, там вроде бы довольно наглядно всё расписывается.
http://alenacpp.blogspot.ru/2005/11/sequence-points.html |
|||
|
||||
| sergioK1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 |
Меня такому еще на первом курсе научили, когда никаких блогеров и в помине не бы, Но если у меня возникают сомнения - имеет ли в данном месте присвоение одной переменной несколько раз между двумя точками следования, я просто переписываю этот кусок. В итоге к тому же получается более читаемый код, а такой код легче поддерживать и развивать. В нормальной фирме от кандидата ждут имеено такой ответ , |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант |
||||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 |
Кстати тоже подумал про "провокацию гoвнокодинга"(с) и даже изучил этот вопрос применительно к Java. Хорошая новость - у жавы последовательность вычислеия выражения специфиед. Плохая новость, нельзя использовать как контр аргумент делфисраче с LSD. Это сообщение отредактировал(а) Zloxa - 13.3.2013, 10:25 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант |
блин, оказывается, можно с помощью DoInc
Добавлено через 10 минут и 37 секунд и результат будет зависеть от того, будет ли присутствовать var function DoInc(var AI : integer): integer; //будет 13 function DoInc(AI : integer): integer; //будет 12 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 |
Akella, а можешь найти в спецификации языка expression evaluation order? Я только для short-cirquit evaluation boolean expression вычитал, что они идут слева направо.
Думаю и для обычных выражений порядок выполнения предопределен, иначе, скажем, конкатенация давала бы недетерменированный результат. Но где это описано - не нашел. Добавлено через 4 минуты и 35 секунд однако ж странно было бы иначе Добавлено через 8 минут и 55 секунд Скажите пожалуйста, кто знает, а все темы участника ZZZkoderZZZ во флейм переесли действительно для того, чтобы их к делфисрачу свести? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант |
ZZZkoderZZZ, сколько у тебя учетных записей на Винграде и какая из них основная?
|
|||
|
||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) |
Это сообщение отредактировал(а) krundetz - 15.3.2013, 16:00 |
|||
|
||||
![]()
|
| Правила раздела «Флейм» | |
|
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Флейм | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |