[previous] 4443 [next] A non-constant expression of 'essentially unsigned' type (%1s) is being converted to a wider signed type, '%2s' on assignment.
Arithmetic type - Assignment

This message is issued whenever a non-constant expression of essentially unsigned type undergoes an assigning conversion to a wider signed integer type, i.e. the configured size (with -s option) of the unsigned type is lower than that of the signed type.

For example:


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

void foo (int b);

int f4443 (unsigned short a)
{
  int sia = a;              /* 4443 */

  foo (a + 1u);             /* 4443 */

  sia = (a - 1u);           /* 4443 */

  return a;                 /* 4443 */
}

This message identifies a safe (widening) conversion, assuming the conversion is intentional. In this case it may be better to document the conversion with an explicit cast. Message 4446 is generated for other unsigned to signed conversions, highlighting potential data loss.

See also:

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