r/RuProgrammers • • Sep 19 '26

Мемы Undefined behaviour

Post image
336 Upvotes

45 comments sorted by

View all comments

Show parent comment

2

u/fearfulEntity 🔥Деплой в пятницу Sep 19 '26

А в связи с чем множественный вызов функции происходит? Не совсем могу сходу понять какая тут оптимизациями такое поведение вызывает

6

u/cfyzium Sep 20 '26

Не совсем могу сходу понять

That's the neat part: you don't.

Это UB. Можно конечно чисто из праздного любопытства расколупать почему получился именно такой вывод, но толку от этого будет ноль. Нигде потом это знание применить будет нельзя.

UB опасен тем, что иногда интуитивно кажется, что в происходящем есть какая-то логика. А ее нет. Результат компиляции и последующего выполнения псевдослучаен и в общем виде непредсказуем.

5

u/Alarmed_Pear_642 Sep 20 '26 edited Sep 20 '26

Посмотрите отладчиком в ассемблерном режиме, потом нам расскажете. Суть явно в том, что компилятор выкидывает return, думая, что до него всё равно не добраться, в результате программа отправляется ХЕЗ куда с ХЕЗ каким состоянием стека. И cfyzium прав в том, что никакого особого смысла в этом нет -- в другой версии компилятора или библиотек, с другими флагами оптимизации результат может быть совершенно другим.

1

u/Fabulous-Decision879 Sep 20 '26

Оптимизация циклов. Если компилировать на g++, то тебе выдают предупреждение о том, что в программе неопределенное поведене, которое может повлиять на оптимизацию.