Непонятное поведение пост-инкремента C++

Вот мой код:

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int ans = (n - 3) / 3; 
    cout << ans++ << " " << ans++ << " " << ans;
    
}

Входные данные: 9

Выходные данные: 3 2 4

Вопрос почему? Ведь должно же по идее в порядке возрастания выводится?

Компилятор - MCVSC++


Ответы (1 шт):

Автор решения: fat cock

До 17 стандарта тут неопределённое поведение, потому что в 1 выражении множество изменений 1 переменной, грубо говоря. Поэтому многие компиляторы с -std=c++98 выдают предупреждения. С 17 всё ок.

https://godbolt.org/z/5v4Pr5

→ Ссылка