MISRA Discussion Forums

Full Version: Rule 13.2 Compliance
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Does the following expression comply with Rule 13.2?

(x = a) && (x = b)

What if it is preceded by the following declaration?

int a = 0;

Not an official answer, but this construct is highly suspicious, because the result of the assignment is used as boolean (MISRA C 2012 10.1 and 13.4).
The amplification of rule 13.2 states that no object shall be modified more than once within a full expression. Therefore the code "(x = a) && (x = b)" will violate rule 13.2.

The rule does not take into account the possible values that an object might take. The initialisation of a to 0 before this line does not effect the compliance of the expression with this rule.

The expression does violate rules 10.1 (assuming int x), 13.4 and 13.5.
If the expression is preceded by "int a = 0;" the code will also violate rule 2.1. Rule 14.3 will be violated if the expression is used within a controlling expression.