[previous] 3772 [next] Implicit conversion: unsigned int to long.
Arithmetic type - Implicit conversions

An expression of type unsigned int is being implicitly converted to type signed long. Implicit type conversions from an unsigned type to a signed type are not recommended.

There are 2 situations to consider:
  1. If the two types happen to be implemented in the same number of bits, there is a danger of data loss because the unsigned value may not be representable in the signed type
  2. If the signed type is larger than the unsigned type, the value of the expression will be preserved. In these circumstances, the conversion message can be suppressed by "switching off" the "strictsignedness" option (-ss-).

Implicit type conversions of this nature can occur in the context of: This message may also occur in balancing operations, but only if type long is larger than type int.


/*PRQA S 2017,3197,3199,3203,3227,3408,3447,3602,3625 ++*/

extern void ef(signed long f);

extern signed long foo(unsigned int n)
{
    signed long f = n;          /* Message 3772 - Initialization */

    f = n;                      /* Message 3772 - Assignment */

    ef(n);                      /* Message 3772 - Function argument */

    return n;                   /* Message 3972 - Function return */
}

See also:

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