Specifically for C/C++, If 'a' is assigned an initial value of 1:
a=++a + a++ would be equivalent to a = 2 + 2
This example increments 'a' to value 2 before evaluating the left side of the sum, then evaluates the right side of the sum (takes 2) before incrementing 'a' to value 3. Finally the sum (4) is assigned to 'a'.
a=a++ + ++a would be equivalent to a = 1 + 3
This example starts by evaluating the left side of the sum (takes 1) before incrementing 'a' to value 2, then increments 'a' to value 3 before evaluating the right side of the sum. Finally the sum (4) is assigned to 'a'.
The final result is the same, but the compiler likely won't get the the result in the same order. Some compiler implementations might optimize this to be identical however. See expression trees for more information.