How do we explain the result of the expression (++x)+(++x)+(++x)?

c++, operator-precedence, undefined-behavior

Solution

We explain it by expecting undefined behaviour rather than any particular result. As the expression attempts to modify x multiple times without an intervening sequence point its behaviour is undefined.

Problem

``` x = 1; std::cout << ((++x)+(++x)+(++x)); ``` I expect the output to be `11`, but it's actually `12`. Why?

Original source

Related problems