Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: added a non-compliant code example and changed the formatting of exceptions

...

Code Block
bgColor#ccccff
langc
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
bgColor#FFcccc
langc
 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
bgColor#ccccff
langc
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
bgColor#FFcccc
langc
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
bgColor#ccccff
langc
if ( ( v == w ) && flag ) { /* ... */ }; 

When the assignment is intended, the following is an alternative compliant solution:

Code Block
bgColor#ccccff
langc
if ( ( (v = w) != 0 ) && flag ) { /* ... */ };

Risk Assessment

...