[previous] 4498 [next] An expression which is the result of a ~ or << operation has been converted to a different essential type category on assignment.
Arithmetic type - Assignment

This message is issued whenever a composite expression which is the result of a ~ or << operation undergoes an assigning conversion 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 assigned-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 assigned-to type may be truncated.

For example:


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

void foo (long b);

long f4498 (unsigned short a)
{
  long sla = (a << 1);      /* 4498 */

  foo (a << 1);             /* 4498 */

  sla = (~a);               /* 4498 */

  return (~a);              /* 4498 */
}


No MISRA C:2012 Rules applicable to message 4498


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