Теорема Ферма говорит: не существует целых чисел, для которых выполняется:
`a³ + b³ = c³`Её доказал Эндрю Уайлс в 1995 году - спустя 358 лет после формулировки.
Но затем Джон Регер показал забавный пример: цикл, скомпилированный через
gcc -O2, мог напечатать:Fermat's Last Theorem has been disprovedВ коде происходило signed integer overflow - переполнение знакового int. А в C это undefined behavior.
Для компилятора это значит: «такого не должно происходить». Поэтому оптимизатор имеет право строить предположения, которые человеку кажутся абсурдными.
В итоге: программа выглядит так, будто нашла контрпример к великой теореме, хотя на деле просто попала в UB.
C не опроверг Ферма.
C просто напомнил, что undefined behavior - это не ошибка выполнения, а разрешение компилятору делать почти всё что угодно.


