Прочитав этот ответ о поведении и точках последовательности 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; ^
Почему? Но, вероятно, ответ будет автоматически отвечать на мой первый вопрос.