Versions Compared

Key

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

...

EXP45-EX3: Assignment can be used in the above contexts if it occurs in a function argument or array index. In this compliant example, the expression x = y is used in a function argument:

 

Code Block
bgColor#ccccff
langc
if (foo(x = y)) { /* ... */ } 

This is a noncompliant 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

...

[Hatton 1995]Section 2.7.2, "Errors of Omission and Addition"

 

...

Image Modified Image Modified