[previous] 3395 [next] Extra parentheses recommended. A * or / operation is the operand of a + or - operator.
Readability

The order in which operators are processed in this expression is not sufficiently clear and so additional parentheses are recommended. In the absence of parentheses, the sequence is determined by rules of precedence and associativity.

In this expression, one of the operands of a binary + or - operator is itself a binary expression formed from a * or / operator. The * or / operator has higher precedence so add parentheses around this operand to make it clear which operator is evaluated first.

For example:


/*PRQA S 584,2017,3103,3198,3199,3203,3401,3408,3447 ++*/

extern int a;
extern int b;
extern int c;

extern void foo(void)
{
    int r;

    r = a + b * c;                    /* Message 3395 + 3390 */
    r = a + (b * c);                  /* OK                  */

    r = a / b - c;                    /* Message 3395 + 3390 */
    r = (a / b) - c;                  /* OK                  */
}


MISRA C:2012 Rules applicable to message 3395:

Rule-12.1  (Advisory) The precedence of operators within expressions should be made explicit


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