Могу ли я убедиться, что исключение не происходит при переполнении целочисленного miltiplication?
Я пишу код, который выполняет некоторую арифметику с длинными значениями, и он НЕ должен генерировать исключение переполнения.
Код должен быть скомпилирован как в Windows (Visual Studio), так и в Linux (ARM Linux).
Существует ли какая-либо директива прагмы или времени компиляции, которую я могу использовать, чтобы сообщить компиляции, что она не должна генерировать исключение переполнения для этого конкретного кода.
Главное здесь:
1- Работает как на Windows, так и на Linux
2- Независимо от общей конфигурации проекта, этот раздел не должен генерировать исключение переполнения. (поэтому установка параметра в проекте не является хорошим решением).
1 ответ
Я не знаю ни о какой реализации, которая будет генерировать исключение переполнения для выражений с целочисленным типом. Но вопрос в том, что вы хотите от этого. Все компиляторы Windows и Linux, которые я знаю, просто молча дадут неправильные результаты, и я не могу представить себе ситуацию, когда это было бы предпочтительнее любой альтернативы.
Обычный способ решения проблемы такого рода - использование предварительных проверок перед началом расчетов. Вы знаете расчеты, которые должны быть выполнены, поэтому вы можете определить диапазон значений, которые можно безопасно обрабатывать без переполнения, и проверить, что вход находится в этом диапазоне перед запуском.