Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The intent of the expression in this noncompliant code example is to test the least significant bit of x.

Code Block
bgColor#FFCCCC
langc
x & 1 == 0

Because of operator precedence rules, the expression is parsed as

Code Block
bgColor#FFCCCC
langc
x & (1 == 0)

which evaluates to

Code Block
bgColor#FFCCCC
langc
(x & 0)

and then to 0.

Compliant Solution

In this compliant solution, parentheses are used to ensure the expression evaluates as expected.

Code Block
bgColor#ccccff
langc
(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
bgColor#ffcccc
langc
x + (y * z)

Risk Assessment

...