Представление объекта значений с плавающей точкой может быть различным (тем же) для значений с равной (не равной) плавающей точкой
Этот дефект возникает при сравнении представления объекта значений с плавающей точкой или представления объекта структур, содержащих представителей с плавающей точкой. Когда вы используете функции memcmp
, bcmp
, или wmemcmp
чтобы выполнить сравнение битового шаблона, дефект поднимается.
Представление объектов значений с плавающей точкой использует определенные битовые шаблоны, чтобы кодировать эти значения. Значения с плавающей точкой, которые равны, например -0.0
и 0.0
в стандарте IEC 60559 могут иметь различные битовые шаблоны в их представлении объекта. Точно так же значения с плавающей точкой, которые не равны, могут иметь тот же битовый шаблон в их представлении объекта.
При сравнении структур, содержащих представителей с плавающей точкой, сравнивайте представителей структуры по отдельности.
Для сравнения двух значений с плавающей точкой используйте ==
или !=
операторы. Если вы следуете стандарту, который препятствует использованию этих операторов, таких как MISRA®убедитесь, что различие между значениями с плавающей точкой находится в допустимой области значений.
Группа: Программирование |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки
: MEMCMP_FLOAT
|
Влияние: Низкое |
Find defects (-checkers)
| Floating point comparison with equality operators
| Memory comparison of padding data
| Memory comparison of strings