![]() |
![]() |
4498 | ![]() |
||||
![]() | |||||||
| 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 */
}
![]() | ||
| QA·C Source Code Analyser 8.1.2
© 2013 Programming Research. www.programmingresearch.com | Personality Groups | Glossary | Message Index | Contents |