At first expression --b is executed. If the result is not equal to zero then the result is assigned to a. Otherwise -99 is assigned to b and to a.
You can check this yourself by writing a simple test program.
Ok, this is good - I see how -99 can be assigned to ' b', but how does 'a' get assigned too? Isn't 'a' only assigned to the operand on the right of the operator, --b?
And what is that second b after the '?' for?
finally, how do you get "is not equal to 0"? Is this because this ternary operator tests for true or false?