MISRAC2012-Rule-14.3_a
In this section:
Synopsis
(Required) Controlling expressions shall not be invariant
Enabled by default
Yes
Severity/Certainty
Medium/Medium

Full description
The condition in an if, for, while, do-while, or ternary operator will always be true. This check is identical to RED-cond-always, MISRAC++2008-0-1-2_a, MISRAC++2023-0.0.2_a.
Coding standards
- CERT EXP17-C
Do not perform bitwise operations in conditional expressions
- MISRA C:2012 Rule-14.3
(Required) Controlling expressions shall not be invariant
- MISRA C++ 2008 0-1-2
(Required) A project shall not contain infeasible paths.
- MISRA C++ 2023 0.0.2
(Advisory) Controlling expressions should not be invariant
Code examples
The following code example fails the check and will give a warning:
void example(void) {
int x = 5;
for (x = 0; x < 6 && 1; x--) {
}
}
The following code example passes the check and will not give a warning about this issue:
void example(void) {
int x = 5;
for (x = 0; x < 6 && 1; x++) {
}
}