Do not use a semicolon on the same line as an if, for, or while statement because it typically indicates programmer error and can result in unexpected behavior.
Noncompliant Code Example
In this noncompliant code example, a semicolon is used on the same line as an if statement:
if (a == b); {
/* ... */
}
Compliant Solution
It is likely, in this example, that the semicolon was accidentally inserted:
if (a == b) {
/* ... */
}
Automated Detection
Tool | Version | Checker | Description |
|---|---|---|---|
| CodeSonar | 9.1p0 | LANG.STRUCT.EBS | Empty branch statement |
| Klocwork | 2025.2 | ||
| LDRA tool suite | 9.7.1 | 11 S, 12 S, 428 S | Fully Implemented |
| Parasoft C/C++test | 2024.2 | CERT-EXP-19 | Fully implemented |
| PRQA QA-C | Unable to render {include} The included page could not be found. | 3109 | |
| PVS-Studio | 7.39 | V529, V715 | |
| SonarQube C/C++ Plugin | 3.11 | S1116 |
Related Guidelines
| SEI CERT Oracle Coding Standard for Java | MSC51-J. Do not place a semicolon immediately following an if, for, or while condition |
| ISO/IEC TR 24772:2013 | Likely Incorrect Expression [KOA] |
| MITRE CWE | CWE-480, Use of incorrect operator |
Bibliography
| [Hatton 1995] | Section 2.7.2, "Errors of Omission and Addition" |


