12-09-2013, 08:23 AM
Using a floating point object to count or compare loop iterations is not recommended. For some values of the loop limits and increment, the accumulation of rounding errors could result in a number of iterations that differs from the expected number.
There are contexts in which use of floating point objects in a controlling expression might not cause any issues (including the example you cite). However a strict interpretation of MISRA-C:2004 does not permit any such uses.
See also: http://misra.org.uk/forum/viewtopic.php?f=69&t=873
---
For MISRA C:2012 this has been clarified in Rule 14.1 and Rule 14.2 - this would allow your example to be compliant, provided that float_to_int(float_var) was invarient
There are contexts in which use of floating point objects in a controlling expression might not cause any issues (including the example you cite). However a strict interpretation of MISRA-C:2004 does not permit any such uses.
See also: http://misra.org.uk/forum/viewtopic.php?f=69&t=873
---
For MISRA C:2012 this has been clarified in Rule 14.1 and Rule 14.2 - this would allow your example to be compliant, provided that float_to_int(float_var) was invarient
Posted by and on behalf of the MISRA C Working Group