Арифметическая операция вызывает переполнение
Это начинает работу, арифметическая операция определяет, переполняется ли результат. Результат этой проверки зависит от того, позволяете ли вы неличные результаты плавающие, такие как бесконечность и NaN.
Результат проверки также зависит от плавающего режима округления, который вы задаете. По умолчанию округляющимся режимом является to-nearest
. Смотрите Float rounding mode (-float-rounding-mode)
.
По умолчанию неличные плавания не позволены. Когда результат операции выходит за пределы позволенной области значений, переполнение происходит. Проверка:
Красный, если результат операции выходит за пределы позволенной области значений.
Оранжевый, если результат операции выходит за пределы позволенной области значений на некоторых путях к выполнению.
Зеленый, если результат операции не выходит за пределы позволенной области значений.
Чтобы точно настроить поведение проверки переполнения, используйте эти опции и задайте аргумент forbid
, allow
, или warn-with-wrap-around
:
Типы данных операнда определяют позволенную область значений для арифметической операции. Если операция включает два операнда, верификация использует правила преобразования ANSI® C, чтобы определить тип общих данных. Этот тип общих данных определяет позволенную область значений.
Для некоторых примеров правил преобразования смотрите Неявные Преобразования типа данных.
Если вы включаете режим верификации, который включает бесконечности, и укажите, что верификация должна предупредить об операциях, которые производят бесконечности, проверка:
Красный, если операция производит бесконечность на всех путях к выполнению, которые программное обеспечение рассматривает, и сами операнды, весьма конечны.
Оранжевый, если операция производит бесконечность на некоторых путях к выполнению, когда сами операнды весьма конечны.
Зеленый, если операция не производит бесконечность, если сами операнды не бесконечны.
Если вы указываете, что верификация должна запретить операции, которые производят бесконечности, цвет проверки зависит от результата операции только. Цвет не зависит от операндов.
Чтобы включить этот режим верификации, используйте эти опции:
Infinities (-check-infinite)
: Используйте аргумент warn
или forbid
.
Группа: числовой |
Язык: C | C++ |
Акроним: OVFL |
-show-similar-overflows
| Consider non finite floats (-allow-non-finite-floats)
| Infinities (-check-infinite)
| Invalid operation on floats
| Overflow mode for signed integer (-signed-integer-overflows)
| Overflow mode for unsigned integer (-unsigned-integer-overflows)
| Subnormal float