14446
Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981
откатываясь назад аргумент "компилятор для UB тоже какой-то код сгенерировал" не совсем ясен. для любого синтаксически корректного кода будет какой-то код сгенерирован.
Читать полностью…
но они же и ub могут взять и определить ему поведение
Читать полностью…
а мог изменить поведение кода от одного минорной версии к другой
Читать полностью…
for (int i = 1; i < 100000000000000000; i *= 10)
Вот тебе пример UB где компилятор оптимизирует цикл до while(1)
а мог не сгенерировать и выкинуть за ненадобностью
Читать полностью…
https://www.reddit.com/r/rust/comments/8rvr0u/how_to_do_overflow_handling/
Читать полностью…
undefined behavior означает что в корректно написанной программе такой ситуации не может происходить и разработчики компиляторов могут исходить из того что таких ситуаций не бывает
Читать полностью…
ну т.е. если сказать что у нас в компиляторе signed integer overflow всегда флопается к нулю — это implementation defined.
Читать полностью…
Я так и не смог прочувствовать чем undefined behavior отличается от implementation defined, поэтому я глубоко в ub-срачи не лезу
Читать полностью…
это не будет произнесение по правилам языка, с точки зрения языка такого слова просто не должно существовать
в этом смысле мой пример, вообще говоря, несколько некорректен, он просто отвечает на вопрос так сказать, иллюстративно
ub это когда можно выразить что то двусмысленное или не осмысленное, что для языка программирования не очень хорошо
Читать полностью…
а ну вот
https://habr.com/ru/companies/ncloudtech/articles/743930/
Где ты типа работаешь и тебя деньги забирают
Читать полностью…
могут, а могут и не определять, поведение кода при UB может быть побочным эффектом конкретной реализации
Читать полностью…
impl. defined — говорит о том что авторы компилятора сами выбирают и гарантируют определенное поведение
Читать полностью…
а имплементейшн дефайнед не может сказать "выкинем"?
Читать полностью…
Но компилятор для ub тоже какой-то код сгенерил
Читать полностью…
в стандарте же impl. defined означает что разработчики компилятора вольны определить поведение по своему усмотрению
Читать полностью…
implementation defined подразумевает что есть некоторое поведение, которое задокументировано для определенной реализации компилятора
Читать полностью…
Ну вот в этом и сила как раз, да
Компилятор имеет набор "аксиом" исходя из которых может код оптимизировать. Самый тупой пример: (int32_t)x > 1800000000000000000 будет false всегда, поскольку ну... очевидно (возможно) и он такую проверку вправе заменить на false
Но это самый банальный пример, можно чот веселее придумать
другой вопрос, что решить эту проблему по другому и не получится
Читать полностью…
произнести любое слово можно по буквам и слогам, в чем проблема?
Читать полностью…
приведу пример из лингвистики: мы можем засунуть в слово сразу много согласных или гласных букв подряд и произнести такое слово не получится
Читать полностью…
Да этого на каждом шагу. Вот бы было наоборот
Читать полностью…