Let's see it line by line.
int a = 10;
int b = 5;
Here we have set a to 10 and b to 5.
b += ++a + b++;
When you do ++a, it means you are increasing a immediatly, so that the increased value is used for the current operation. When you do b++, it means that b will be increased AFTER the operation.
In that moment, you are saying b += 11 + 5;. 11 comes from the already increased a and 5 is the value of b, which is only increased after the operation ends.
b += 16 will turn b into 21, since b was 5 before. When the operation ends, you increase 1 in b, because of the b++, resulting in 22.
Here we have set a to 11 and b to 22.
a = a++ * ++b;
The idea is the same, b will be immediatly increased, so we have a = a * 23, resulting 253, since a was 11 before. After the operation, we should add 1 in a, because of the a++, but we WON'T, because we are setting a new value for a and the old value, which would be increased, doesn't exist anymore.
Here we have set a to 253 and b to 23.
cout<<a;
Outputs 253.