![]() |
![]() |
4398 | ![]() |
||||
![]() | |||||||
| 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 |