В стандарте C указано, что переполнение в арифметике не определено.Внедрение/принудительная арифметика обхода в C
Я хотел бы знать, как реализовать арифметику wraparound в удобном для восприятия виде. Это означает, что решения проверки переполнения, например представленные here, не являются опцией (поскольку они замедляют работу примерно на порядок).
Я предполагаю, что решение потребует написания процедуры сборки для этого. Есть ли библиотека, которая делает это (желательно для множественной архитектуры, хотя x86 является обязательным)?
В качестве альтернативы существует ли флаг компилятора (для gcc & clang), который заставляет компилятор применять семантику wraparound для целочисленной арифметики?
«Стандарт C говорит, что переполнение в арифметике не определено». -Это очень неправильно! – Olaf
Используйте целые числа unsigned, где переполнение всегда определяется или компилируется с помощью '-fwrapv', чтобы получить надёжное переполнение над целыми целыми числами. – PSkocik