...
Code Block | ||||
---|---|---|---|---|
| ||||
do { /* ... */ } while ( foo(), (x = y) != 0) ; |
Noncompliant Code Example
In this non-compliant example, the expression p = q is used as the controlling expression of the while statement.
Code Block | ||||
---|---|---|---|---|
| ||||
do { /* ... */ } while ( x = y, p = q ) ; |
Compliant SolutionCompliant Example
This is a compliant example because the expression x = y is not used as the controlling expression of the while statement.
...
In this compliant example, the expression x=y is used in a function argument
Code Block | ||||
---|---|---|---|---|
| ||||
if ( foo( x = y ) ) { /* ... */ } |
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 not intended, this conditional block is now executed when 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
...