[previous] 4114 [next] Operand of ~ operator is a 'Boolean' expression.
Arithmetic type - Operands REFERENCE - ISO:C90-6.3.3.3 Unary Arithmetic Operators

The operand of this bitwise complement operator (~) is an expression which is effectively Boolean. This is bad practice at best and probably a mistake.

Perhaps a logical negation operator (!) was intended ?

For example:


/*PRQA S 2017,3120,3198,3204,3227,3408 ++*/

int foo(int a, int b)
{
    int x;

    x = ~((a > b) && (b > 10));        /* Message 4114 */

    x = !((a > b) && (b > 10));        /*              */

    return x;
}

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