...
Mistakes regarding precedence rules may cause an expression to be evaluated in an unintended way, which can lead to unexpected and abnormal program behavior.
Recommendation | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
EXP00-C | Low | Probable | Medium | P4 | L3 |
Automated Detection
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
CodeSonar |
| LANG.STRUCT.PARENS | Missing Parentheses | ||||||
| CC2.EXP00 | Fully implemented | |||||||
Klocwork |
| MISRA.EXPR.PARENS.2012 |
LDRA tool suite |
| 361 S, 49 S | Fully implemented | ||||||
Parasoft C/C++test |
|
|
| CODSTA-97 | Fully implemented | |||||||
Polyspace Bug Finder | R2016a | Possibly unintended evaluation of expression because of operator precedence rules | Operator precedence rules cause unexpected evaluation order in arithmetic expression | ||||||
PRQA QA-C |
| 3389 | Fully implemented | ||||||
SonarQube C/C++ Plugin |
| S864 |
PVS-Studio | 6.22 | V502, V593, V634, V648 | General analysis rule set |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
SEI CERT C++ Coding Standard | VOID EXP00-CPP. Use parentheses for precedence of operation |
ISO/IEC TR 24772:2013 | Operator Precedence/Order of Evaluation [JCW] |
MISRA C:2012 | Rule 12.1 (advisory) |
Bibliography
[Dowd 2006] | Chapter 6, "C Language Issues" ("Precedence," pp. 287–288) |
[Kernighan 1988] |
[NASA-GB-1740.13] | Section 6.4.3, "C Language" |
...