...
The intent of the expression in this noncompliant code example is to test the least significant bit of x
.
Code Block | ||||
---|---|---|---|---|
| ||||
x & 1 == 0 |
Because of operator precedence rules, the expression is parsed as
Code Block | ||||
---|---|---|---|---|
| ||||
x & (1 == 0) |
which evaluates to
Code Block | ||||
---|---|---|---|---|
| ||||
(x & 0) |
and then to 0
.
Compliant Solution
In this compliant solution, parentheses are used to ensure the expression evaluates as expected.
Code Block | ||||
---|---|---|---|---|
| ||||
(x & 1) == 0 |
Exceptions
EXP00-EX1: Mathematical expressions that follow algebraic order do not require parentheses. For instance, in the expression
...
the multiplication is performed before the addition by mathematical convention. Consequently, parentheses to enforce this would be redundant.
Code Block | ||||
---|---|---|---|---|
| ||||
x + (y * z) |
Risk Assessment
...