When using the postfix
increment operator, it is important to know that the result of the expression x++ is the value before the operation
x.
This means that in some cases, the result might not be what you expect:
x++ to x, it’s the same as assigning x to itself, since the value is assigned before the
increment takes place x++, the returning value is x, not x+1 The same applies to the postfix and prefix decrement operators.
To solve the issue in assignments, eliminate the assignment, since x\++ mutates x anyways.
To solve the issue in return statements, consider using the prefix
increment operator, since it works in reverse: the result of the expression ++x is the value after the operation,
which is x+1, as one might expect.
The same applies to the postfix and prefix decrement operators.
int PickNumber()
{
int i = 0;
int j = 0;
i = i++; // Noncompliant: i is still 0
return j--; // Noncompliant: returns 0
}
int PickNumber()
{
int i = 0;
int j = 0;
i++; // Compliant: i is incremented to 1
return --j; // Compliant: returns -1
}