Предполагается, что в
cout << ++x << " " << y << endl;
++x
будет выполнено вычисление до того, как будет получено значение y
.Другими словами, вы предполагаете, что ваше выходное выражение вычисляется слева направо.Но это не обязательно так.Измените свой код на этот
++x;
cout << x << " " << y << endl;
, и вы получите ожидаемый результат.
Также новички иногда предполагают, что ++x
означает, что x
будет увеличен раньше всего.Но опять же, это не так, ++x
просто означает, что x
будет увеличиваться до того, как будет взято значение x
, а не до чего-либо еще.