Представление объекта значений с плавающей точкой может быть различным (тем же) для значений с равной (не равной) плавающей точкой
Этот дефект возникает при сравнении представления объекта значений с плавающей точкой или представления объекта структур, содержащих представителей с плавающей точкой. Когда вы используете функции 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