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