Прочитав этот ответ о поведении и точках последовательности undefined, я написал небольшую программу:
#include <stdio.h>
int main(void) {
  int i = 5;
  i = (i, ++i, 1) + 1;
  printf("%d\n", i);
  return 0;
}
Выходной сигнал 2. О, Боже, я не видел, как приближается декрет! Что здесь происходит?
Кроме того, компилируя приведенный выше код, я получил предупреждение:
px.c: 5: 8: предупреждение: левый операнд выражения для запятой не действует
[-Wunused-value] i = (i, ++i, 1) + 1; ^
Почему? Но, вероятно, ответ будет автоматически отвечать на мой первый вопрос.
