The rule 5-2-1 in MISRA-2008 states that
Each operand of a logical
&&
or||
shall be a postfix-expression. Exception: Where an expression consists of either a sequence of only logical&&
or a sequence of only logical||
, extra parentheses are not required.
And here are the examples, right from the document itself:
if (x == 0 && ishigh) // Non-compliant
if (( x == 0 ) && ishigh) // Compliant
if (x || y || z) // Compliant by exception, if x, y and z bool
if (x || y && z) // Non-compliant
if (x || (y && z)) // Compliant
if (x && !y) // Non-compliant
if (x && (!y)) // Compliant
if (is_odd(y) && x) // Compliant
if ((x > c1) && (y > c2) && (z > c3)) // Compliant - exception
if ((x > c1) && (y > c2) || (z > c3)) // Non-compliant
if ((x > c1) && ((y > c2) || (z > c3))) // Compliant as extra() used
Could somebody point me where the posfix-expressions are there? They look as primary ones. I don't see anything like ++
or --
.