Я читал, Может ли кто-нибудь объяснить эти поведения undefined (i = я ++ + ++ i, я = я ++ и т.д.) и попытался понимание Последовательности точек на "comp.lang.c FAQ" после траты более 2 часов времени, пытаясь объяснить следующие результаты gcc-компилятором.
expression(i=1;j=2)     i       j       k
k = i++ + j++;          2       3       3
k = i++ + ++j;          2       3       4
k = ++i + j++;          2       3       4
k = ++i + ++j;          2       3       5
k = i++ + i++;          3               2
k = i++ + ++i;          3               4
k = ++i + i++;          3               4
k = ++i + ++i;          3               6
i = i++ + j++;          4       3
i = i++ + ++j;          5       3
i = ++i + j++;          4       3
i = ++i + ++j;          5       3
i = i++ + i++;          4
i = i++ + ++i;          5
i = ++i + i++;          5
i = ++i + ++i;          6
Вопрос:
-  Я хочу знать, имеют ли все показанные выражения (в 4 группах) на приведенном выше рисунке поведение undefined? Если только некоторые из них имеют поведение undefined, какие из них выполняются, а какие - нет? 
-  Для определенных выражений поведения, любезно, вы можете показать (не объяснять), как компилятор их оценивает. Просто, чтобы убедиться, что если я получил это предварительное приращение и post increment правильно. 
Фон:
Сегодня я посетил интервью в кампусе, в котором меня попросили объяснить результаты i++ + ++i для заданного значения i. После компиляции этого выражения в gcc я понял, что ответ, который я дал в интервью, был неправильным. Я решил не делать такую ошибку в будущем и, следовательно, попытался собрать все возможные комбинации операторов pre и post increment и скомпилировать их в gcc, а затем попытаться объяснить результаты. Я боролся более двух часов. Я не мог найти одно поведение оценки этих выражений. Итак, я сдался и повернулся к stackoverflow. После небольшого количества архивов чтения выяснилось, что есть что-то вроде поведения sequence point и undefined.
