Почему g++ и msvc по-разному интерпретируют код?

1,00
р.
Дан код:
int main() { int a = 8 int b = 100 float d int c = ++a * a++ d = b / (--a) return 0 }
но почему-то в g++ переменная с равна 90, а в msvc она равна 81.

Ответ
Неопределенное поведение классическое:
int c = ++a * a++
Для C++98:
Двухкратная запись в переменную a в пределах одной точки следования.
Для C++11:
Нарушение правил порядка вычисления.
Программа ошибочна. Компилятор может реагировать случайным образом.