The increment operator, ++, and the decrement operator, --, can be applied to an 'lvalue' before or after that 'lvalue'. The results are different if the incremented or decremented expression is part of a larger expression. When applied lexically before, it means to increment (or decrement) first then take the value. While if applied lexically after it means take the value then increment (or decrement). When applied before it is called pre-incrementing (or pre-decrementing). When applied after it is called post-incrementing (or post-decrementing).
int a=2,b=6,c; ... c = ++a * b--;
The meaning of the above is, increment 'a' and multiply that incremented value by the value of 'b' storing that product (3*6) into 'c' (18); then decrement 'b'. Actually whether 'b' is decremented before the assignment or not is not defined, as long as 'c' is calculated using the value of 'b' before 'b' is decremented.
There is a danger in using this operator when passing it into a macro because, depending upon the macro implementation, theexpression could be evaluated more than once (which is uusally not what is intended).