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

An expression of type unsigned long long is being implicitly converted to a type of lower rank, unsigned long. This will result in a loss of information unless the 2 types happen to be implemented in the same number of bits.

Implicit type conversions of this nature can occur in the context of:

Make sure that you are aware of the type sizes that are implemented when this code is compiled and ensure that QAC is appropriately configured to be consistent. Type sizes in QAC are configured using the -size option (compiler personality).

By default, this message will only be generated if the 2 types are configured to be of different size; but, if the -strictrank+ option is applied, the message will always be generated, even if the types are "equivalent" - i.e. configured to be the same size. The strictrank option is configured in the analyser personality.

For example:


/*PRQA S 2017,3197,3199,3203,3227,3408,3447,3602,3625 ++*/
/****************************
 * OPTIONS: -ex LONGLONG -sr+
 ****************************/


extern void ef(unsigned long p);

extern unsigned long foo(unsigned long long v)
{
    unsigned long a = v;        /* Message 3871 */

    a = v;                      /* Message 3871 */

    ef(v);                      /* Message 3871 */

    return v;                   /* Message 4071 */
}


No MISRA C:2012 Rules applicable to message 3871


See also:

QA·C Source Code Analyser 8.1
MISRA C:2012 Compliance Module 1.0
© 2012 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index | MISRA C:2012 Rule Index Contents