Avoid Assignments Inside an If Condition

Avoid Assignments Inside an If Condition

An assignment expression can appear inside an if condition:

   if (x = getval() )  {    // do someting  }

The if condition is evaluated in two steps: first, the unconditional assignment to x takes place. Then, x is checked. The if block is executed only if x’s value (after the assignment) isn’t zero. Although this technique can save you a few keystrokes, it’s highly dangerous and should be avoided. The problem is that one can easily mistake == for = or vice versa. For this reason, several compilers issue a warning message if you place an assignment expression inside an if condition, to draw your attention to a potential bug. If you need to assign a value and test the result, separate these two steps into two distinct statements as follows:

   x = getval();  if (x)  {    // do someting  }

This way, you document your intention more clearly and avoid this potential bug.


Share the Post: