[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 */
}

QA·C Source Code Analyser 8.1.2
© 2013 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index Contents