MISRA Discussion Forums
else statement about Rule2.1 - 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.2 Unused code (https://forum.misra.org.uk/forumdisplay.php?fid=157)
+---- Thread: else statement about Rule2.1 (/showthread.php?tid=1124)



else statement about Rule2.1 - KumikoItoh - 28-10-2014

I have a question about Rule2.1.

Are these samples correct?
The else statement is null statement or not.

sample_1
if ( a= 5 ) {
y=3;
}else{
y=0; /* not compliant */
}

sample_2
if ( a= 5 ) {
y=3;
}else{
; /* compliant */
}

I think if the else statement is null statement the code is reachable.
Is is correct?

And how about is default label?

In case all case is coded,if default label has null statement , the code is reachable.
Is it correct?

Please teach me.

Regards


Re: else statement about Rule2.1 - misra-c - 14-11-2014

Thank you for your query. We will reply after our next working group meeting which is on the 3rd December.


Re: else statement about Rule2.1 - misra-c - 05-12-2014

The following response assumes that "a" is not volatile.

A statement with no executable code is not considered to be unreachable. This includes null statements and empty compound statements. The same applies to a default statement which contains no executable code.

The "else { ; } " is therefore not considered as unreachable code and is compliant with this rule.

The "else { y = 0; }" is unreachable as the statement contains code that would be executed if that control flow path had been reached.

However the above code does violate rule 14.3, since the condition "a >= 5" is an invariant as it will always evaluate to true due to the previous condition "a < 5 ".