Re[11]: А вот не надо верить глазам своим :)
От: Mr.Delphist  
Дата: 13.11.17 16:00
Оценка:
Здравствуйте, Vain, Вы писали:

V>Здравствуйте, Nikе, Вы писали:


N>>>>Люблю порядок. Меня учили что ЮБ имеет право тебе диск отформатировать.

V>>>Плохо учили, УБ в одном месте не в праве порождать УБ в другом.
N>>Не уловил логики.
V>форматирование диска от неправильной последовательности сложения в каком-то кривом приложении это независимое УБ.

Оптимизатор выкидывает кусок кода, посчитав какой-то ифчик заранее предвычисляемым. Этот ифчик уберегал от вызова "format c: /y" (или что там по параметрам у него — не помню). В результате, дебажная сборка работает как надо, релизная — форматит диск независимо от телодвижений поциЭнта.
Re[12]: А вот не надо верить глазам своим :)
От: Vain Россия google.ru
Дата: 13.11.17 16:29
Оценка: +1
Здравствуйте, Mr.Delphist, Вы писали:

MD>Оптимизатор выкидывает кусок кода, посчитав какой-то ифчик заранее предвычисляемым. Этот ифчик уберегал от вызова "format c: /y" (или что там по параметрам у него — не помню). В результате, дебажная сборка работает как надо, релизная — форматит диск независимо от телодвижений поциЭнта.

Глупости. В реальности будет как мининум код подтверждением намерений выстрелить себе в ногу, наподобии "повторите ввод пароля", да ещё и с задержкой.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[9]: А вот не надо верить глазам своим :)
От: Masterspline  
Дата: 13.11.17 17:20
Оценка: +2 -1 :)
N>>Люблю порядок. Меня учили что ЮБ имеет право тебе диск отформатировать.
V>Плохо учили, УБ в одном месте не в праве порождать УБ в другом.

UB в любом месте — это полный UB, глобальный и бесповоротный. Не надо недооценивать UB.
Re[10]: А вот не надо верить глазам своим :)
От: Vain Россия google.ru
Дата: 14.11.17 09:17
Оценка:
Здравствуйте, Masterspline, Вы писали:

N>>>Люблю порядок. Меня учили что ЮБ имеет право тебе диск отформатировать.

V>>Плохо учили, УБ в одном месте не в праве порождать УБ в другом.
M>UB в любом месте — это полный UB, глобальный и бесповоротный. Не надо недооценивать UB.
Нет конечно. Компилятор дложен страховать в этом месте, иначе накой он нужен?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[5]: А вот не надо верить глазам своим :)
От: AleksandrN Россия  
Дата: 14.11.17 12:18
Оценка:
Здравствуйте, Vain, Вы писали:

V>Нормальный компилятор не будет дополнительно "подсирать" логику даже несмотря на УБ.


Подсирать не будет. Но UB на то и UB, что результат не определён и может отличаться у разных компиляторов.
На данном примере gcc даёт результат 13, а MSVC 15.
Re[2]: А вот не надо верить глазам своим :)
От: AlexGin Беларусь  
Дата: 14.11.17 20:26
Оценка:
Здравствуйте, K13, Вы писали:

K13>Здравствуйте, c-smile, Вы писали:


K13>
K13>printf("%d", ++a + (++a + ++a));
K13>

K13>и получаем 15

Всё верно — так как выполнение здесь идёт справо налево
Re[11]: А вот не надо верить глазам своим :)
От: Хреннос  
Дата: 09.01.18 07:33
Оценка:
Здравствуйте, Vain, Вы писали:

V> Компилятор дложен страховать в этом месте, иначе накой он нужен?

Это в голанге компилятор страхующий.
Компилятор С++ никому ничего не дложен, окромя следования стандарту. Он даже предупреждения выдавать не обязан (стандарт говорит, что "implementations are encouraged to issue a warning").
Re: А вот не надо верить глазам своим :)
От: Мёртвый Даун Россия  
Дата: 09.01.18 08:38
Оценка:
Здравствуйте, c-smile, Вы писали:

Немного оффтопа. Навеяло чтото.

Пора бы уже отходить от строгих канонов когда компилятор рубит пальцы. Наоборот, он должен быть моим другом и помощником. Предвидеть мои действия, исправлять их изо всех сил, даже если с утра я выпил коньяку.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Re[2]: А вот не надо верить глазам своим :)
От: 0x7be СССР  
Дата: 09.01.18 09:31
Оценка: -1
Здравствуйте, Мёртвый Даун, Вы писали:

МД>Пора бы уже отходить от строгих канонов когда компилятор рубит пальцы. Наоборот, он должен быть моим другом и помощником. Предвидеть мои действия, исправлять их изо всех сил, даже если с утра я выпил коньяку.

Всё верно! Почувствовал запах алкоголя — заблокировал консоль.
Определил такой код, как ТС написал — ампутировал руки программисту, чтобы больше не писал такого.
Re: А вот не надо верить глазам своим :)
От: Bjorn Skalpe Земля  
Дата: 19.02.18 05:01
Оценка:
CS>printf("%d", ++a + ++a + ++a);

За такие извращения бить надо лопатой...
Re[9]: А вот не надо верить глазам своим :)
От: Meyers  
Дата: 20.03.18 17:36
Оценка:
N>>Люблю порядок. Меня учили что ЮБ имеет право тебе диск отформатировать.
V>Плохо учили, УБ в одном месте не в праве порождать УБ в другом.

УБ в одном месте вправе "порождать УБ" даже в коде, который выполнялся до операции с УБ.
Re[8]: А вот не надо верить глазам своим :)
От: alzt  
Дата: 02.04.18 20:54
Оценка: +1
Здравствуйте, Nikе, Вы писали:

V>>Зачем? Любишь извращения?


N>Люблю порядок. Меня учили что ЮБ имеет право тебе диск отформатировать.


Почти все программы содержат UB и разработчики компиляторов об этом знают.
Re[9]: А вот не надо верить глазам своим :)
От: Nikе Россия  
Дата: 02.04.18 23:09
Оценка: -1
Здравствуйте, alzt, Вы писали:

N>>Люблю порядок. Меня учили что ЮБ имеет право тебе диск отформатировать.


A>Почти все программы содержат UB и разработчики компиляторов об этом знают.


Ну баги принципиально неискоренимы, при разработке в стиле предлагаемом императивными языками.
Нужно разобрать угил.
Re[10]: А вот не надо верить глазам своим :)
От: alzt  
Дата: 03.04.18 19:48
Оценка:
Здравствуйте, Nikе, Вы писали:

A>>Почти все программы содержат UB и разработчики компиляторов об этом знают.


N>Ну баги принципиально неискоренимы, при разработке в стиле предлагаемом императивными языками.


Да при любом стиле, люди ошибаются. К счастью разработчики компиляторов не наказывают за это специально. UB может привести к очень неприятным последствиям, даже хуже, чем форматирование диска, но никто специально вставлять какую-то гадость в этом случае не будет. И в большинстве случаев последствия будут довольно локальными.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.