include::../description.adoc[]

== Noncompliant Code Example

----
if (x == 0) {
  doSomething();
} else if (x == 1) {
  doSomethingElse();
}
----

== Compliant Solution

----
if (x == 0) {
  doSomething();
} else if (x == 1) {
  doSomethingElse();
} else {
  error();
}
----

== Exceptions

When all branches of an ``++if++``-``++else if++`` end with ``++return++``, ``++break++`` or ``++throw++``, the code that comes after the ``++if++`` implicitly behaves as if it was in an ``++else++`` clause. This rule will therefore ignore that case.

== See

* MISRA C:2004, 14.10 - All if...else if constructs shall be terminated with an else clause.
* MISRA {cpp}:2008, 6-4-2 - All if...else if constructs shall be terminated with an else clause.
* MISRA C:2012, 15.7 - All if...else if constructs shall be terminated with an else statement
* https://wiki.sei.cmu.edu/confluence/x/RtYxBQ[CERT, MSC01-C.] - Strive for logical completeness
* https://wiki.sei.cmu.edu/confluence/x/jzZGBQ[CERT, MSC57-J.] - Strive for logical completeness

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
