...
In this compliant example, the expression x = y is itself a parameter to a comparison operation.
...
In this compliant example, the expression x x = y is a single primary expression
...
In this compliant example, the expression x=y is used in a function argument
| Code Block | ||||
|---|---|---|---|---|
| ||||
if ( foo( x = y ) ) { /* ... */ } |
Noncompliant Code Example
This is a non-compliant example because && is not a comparison or relational operator and the entire expression is not primary.
| Code Block | ||||
|---|---|---|---|---|
| ||||
if ( ( v = w ) && flag ) { /* ... */ } |
When the assignment of v to w is v to w is not intended, this conditional block is now executed when v is v is equal to w.
| Code Block | ||||
|---|---|---|---|---|
| ||||
if ( ( v == w ) && flag ) { /* ... */ };
|
When the assignment is intended, the following is an alternative compliant solution:
| Code Block | ||||
|---|---|---|---|---|
| ||||
if ( ( (v = w) != 0 ) && flag ) { /* ... */ }; |
Risk Assessment
...