The situation is even worse, due to the possible interleaving of the execution of function calls.
Re:My favourite C++ footgun
by towergratis on Tuesday June 22, 2021 @05:29PM
(#27597474)
The root cause is the same
How is it "the same"? If the evaluations of the individual arguments can't overlap, then the C example's problem still exists while the C++ example's problem doesn't. And if the order of evaluation were guaranteed but the evaluations could overlap, the C example wouldn't have a problem but the C++ example still would. To me the two problem's causes seem quite different.
Well, except that C does not have exceptions (at least not in the way that C++ does).
longjmp for the win (or loss)!
The problem is similar in C as well.
`printf("%d, %d", i++, i++);` will give you different results depending on the compiler.