![]() |
|
Модераторы: LSD |
![]()
|
|
| 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... Почему бы это? |
|||
|
||||
![]()
|
| Правила раздела «Флейм» | |
|
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Флейм | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |