[previous] 4398 [next] An expression which is the result of a ~ or << operation has been cast to a different essential type category.
Arithmetic type - Casts

This message is issued whenever a composite expression which is the result of a ~ or << operation has been cast to a different essential type category.

It is a common misconception among programmers that the type in which the bitwise 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 after any integral promotion. Therefore, top bits which could be represented in the cast-to type may be truncated.

For example:


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

void foo (long b);

long f4398 (unsigned short a)
{
  foo ((long) (a << 1u));   /* 4398 */

  return ((long) (~a));     /* 4398 */
}


MISRA C:2012 Rules applicable to message 4398:

Rule-10.8  (Required) The value of a composite expression shall not be cast to a different essential type category or a wider essential type


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