Search code examples
c++undefined-behavioroperator-precedence

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


x = 1;
std::cout << ((++x)+(++x)+(++x));

I expect the output to be 11, but it's actually 12. Why?


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.