Проблема с постинкрементом в Visual Studio

int x = 0;
x = x++;
cout << x; // 1

Если я не ошибаюсь, то в x должно записаться 0 а потом только увеличить значение. Кто объяснит что за дела?

Писал в Visual Studio 2019.


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

Автор решения: HolyBlackCat

Да, там должен быть 0, но до С++17 это вызывало неопределенное поведение (см. 20 пункт здесь).

Похоже в MSVC это еще не исправили.

Что интересно, GCC и Clang ругаются на этот код, но таки выводят 0.

→ Ссылка