Могу ли я убедиться, что исключение не происходит при переполнении целочисленного miltiplication?

Я пишу код, который выполняет некоторую арифметику с длинными значениями, и он НЕ должен генерировать исключение переполнения.

Код должен быть скомпилирован как в Windows (Visual Studio), так и в Linux (ARM Linux).

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

Главное здесь:

1- Работает как на Windows, так и на Linux

2- Независимо от общей конфигурации проекта, этот раздел не должен генерировать исключение переполнения. (поэтому установка параметра в проекте не является хорошим решением).

1 ответ

Я не знаю ни о какой реализации, которая будет генерировать исключение переполнения для выражений с целочисленным типом. Но вопрос в том, что вы хотите от этого. Все компиляторы Windows и Linux, которые я знаю, просто молча дадут неправильные результаты, и я не могу представить себе ситуацию, когда это было бы предпочтительнее любой альтернативы.

Обычный способ решения проблемы такого рода - использование предварительных проверок перед началом расчетов. Вы знаете расчеты, которые должны быть выполнены, поэтому вы можете определить диапазон значений, которые можно безопасно обрабатывать без переполнения, и проверить, что вход находится в этом диапазоне перед запуском.

Другие вопросы по тегам