[previous] 4395 [next] A composite expression of 'essentially floating' type (%1s) is being cast to a different type category, '%2s'.
Arithmetic type - Composite expressions

This message is issued whenever a composite expression of essentially floating type has been cast to a different essential type category.

It is a common misconception among programmers that the type in which the arithmetic operation is evaluated is influenced by the cast-to type. Instead, the type of the expression is determined solely from the type of its operands. Therefore, a loss of precision may occur, which could be avoided if operands were cast instead.

For example:


/*PRQA S 1-9999 ++*/
/*PRQA S 4395 --*/

void foo (int b);

int f4395 (float a)
{
  foo ((int) (a + 1.0f));    /* 4395 */

  return ((int) (a / 3.0f)); /* 4395 */
}


MISRA-C:2004 Rules applicable to message 4395:

Rule  10.4  (Required) The value of a complex expression of floating type shall only be cast to a floating type that is narrower or of the same size.


QA·C Source Code Analyser 8.1
MISRA-C:2004 Compliance Module 3.2
© 2012 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index | MISRA-C:2004 Rule Index Contents