Philippe Mori
Ну, в C# правила более определены, чем в C++...
Инкремент в C#, C и C++[^]
В C#, вы сначала пример покажет 13 и 34 и второй пример покажет 13 и 8.
В C++ это было бы неопределенное поведение. Оба значения a и c будут неопределенными. На практике значение будет зависеть от порядка выполнения компилятором операций.
Компилятор C/C++ может по существу вычислить 3 подвыражения в любом порядке и может сохранить результат постфиксного оператора в любое время, а также может загрузить значение переменных из памяти один или несколько раз. Таким образом, как только одна и та же переменная будет изменена более одного раза в выражении без точки последовательности между двумя операциями, результат будет неопределенным.
На практике a, вероятно, будет 11, 12 или 13 в первом примере, а c-между 31 и 34, поскольку неопределенное поведение обычно является одной из возможных интерпретаций. Для второго примера c, вероятно, будет между 7 и 12.
Кстати, в C/C++ значение будет зависеть от компилятора,а часто и от оптимизации.
Обновление
Еще немного информации для C++: Точка последовательности-Википедия[^]