Поскольку у других есть указатель, это неопределенное поведение.Вдвойне для целочисленного переполнения.Вот что делает gcc из функции на x86_64 (когда вы игнорируете предупреждение):
0000000000000000 <rec>:
0: f3 c3 repz retq
Он просто возвращает с любым значением в регистре возврата.
Отлично для другихдействительным результатом будет формирование вашего жесткого диска или продажа вашей души дьяволу.Я надеюсь, что clang превратит это в код операции # ub2, но не сможет проверить этот atm.