Есть 2 строчки кода:
int i = 0;
cout << i++ << i++ << i++;
Почему на консоль выводится 210? Я бы понял, если выводилось бы 012 или 222. Объясните почему выводится в обратном порядке
Потому, что это типичный пример "неопределённого поведения". Стандарт не определяет последовательность, в которой будут вычислены части выражения. Потому код, генерируемый компилятором, может вычислять части выражения в любом порядке - независимо от того, как выражение записано в исходном коде. В твоём случае имеется ОДНО выражение, содержащее три операции << и три операции ++.Операции << код, генерируемый компилятором, выполнит строго слева направо. А вот операции ++ будут выполнены в том порядке, который компилятор сочтёт оптимальным. P.S. Хорошим тоном являет НЕ использовать повторно в том же выражении переменную, к которой применены операции ++ или --.
Всё зависит от того, как компилируются равнозначные действия - справа налево или слева направо. И что приоритетней в равнозначных операциях - << или ++ Это равнозначно вопросу "Сколько будет 6/3*2? 4 или 1 ?"