MISRA Discussion Forums
Rule 13.2 Compliance - Printable Version

+- MISRA Discussion Forums (https://forum.misra.org.uk)
+-- Forum: MISRA C (https://forum.misra.org.uk/forumdisplay.php?fid=4)
+--- Forum: MISRA C:2012 and MISRA C:2023 guidelines (https://forum.misra.org.uk/forumdisplay.php?fid=21)
+---- Forum: 8.13 Side effects (https://forum.misra.org.uk/forumdisplay.php?fid=168)
+---- Thread: Rule 13.2 Compliance (/showthread.php?tid=1407)



Rule 13.2 Compliance - rcseacord - 21-03-2018

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;

Thanks,
rCs


Re: Rule 13.2 Compliance - dg1980 - 22-03-2018

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).


Re: Rule 13.2 Compliance - misra-c - 04-05-2018

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.