This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).
This diagnostic rule applies only to code written in C++. The code should not contain implicit conversions from floating-point types to integer types, and vice versa.
Integer types are:
Floating-point types are:
Implicit conversion from floating-point types to integer types may result in losing some part of the value (for example, the decimal part) or lead to undefined behavior if the floating-point value cannot be represented as an integer value.
Implicit conversion from integer types to floating-point types may result in imprecise representation not meeting the developer's expectations.
Example of non-compliant code:
void foo1(int x, float y);
void foo2()
{
float y = 10;
int x = 10.5;
foo1(y, x);
}
Example of code considered compliant from the point of view of this diagnostic:
void foo1(int x, float y);
void foo2()
{
float y = static_cast<float>(10);
int x = static_cast<int>(10.5);
foo1(static_cast<int>(y), static_cast<float>(x));
}
This diagnostic is classified as:
|