Because the result variable or register is not cleaned up, so the right - old result - is assigned to the left - new - result.
This is by accident and depends on platform and optimizations.
You can not rely on this behavior. Any in between calls would possibly trash the result anyway.
Anyway it of course is bad code.