Арифметическая операция вызывает переполнение
Эта проверка на арифметической операции определяет, переполнен ли результат. Результат этой проверки зависит от того, разрешаете ли вы нефинитные результаты с плавающей точкой, такие как бесконечность и NaN.
Результат проверки также зависит от заданного режима округления с плавающей точкой. По умолчанию режим округления to-nearest
. См. Float rounding mode (-float-rounding-mode)
.
По умолчанию нефинитные поплавки не разрешены. Когда результат операции выходит за пределы допустимой области значений, происходит переполнение. Проверка:
Красный, если результат операции выходит за пределы допустимой области значений.
Оранжевый, если результат операции находится вне допустимой области значений на некоторых путях выполнения.
Зеленый, если результат операции не выходит за пределы допустимой области значений.
Чтобы точно настроить поведение проверки переполнения, используйте эти опции и задайте аргумент forbid
, allow
, или warn-with-wrap-around
:
Типы данных операнда определяют допустимую область значений для арифметической операции. Если операция включает два операнда, верификация использует ANSI® Правила преобразования C для определения общего типа данных. Этот общий тип данных определяет допустимую область значений.
Для некоторых примеров правил преобразования смотрите Допущения о неявных преобразованиях типов данных.
Если вы включите режим верификации, который включает бесконечности и указывает, что верификация должна предупреждать об операциях, которые приводят к бесконечности, проверка является:
Красный, если операция создает бесконечность на всех путях выполнения, которые рассматривает программное обеспечение, и сами операнды не бесконечны.
Оранжевый, если операция создает бесконечность на некоторых путях выполнения, когда сами операнды не бесконечны.
Зеленый, если операция не производит бесконечность, если только сами операнды не бесконечны.
Если вы задаете, что верификация должна запретить операции, которые дают бесконечность, цвет проверки зависит только от результата операции. Цвет не зависит от операндов.
Чтобы включить этот режим верификации, используйте следующие опции:
Infinities (-check-infinite)
: Использовать аргумент warn
или forbid
.
Группа: Численный |
Язык: C | C++ |
Акроним: ОВФЛ |