Прочитавши цю відповідь про невизначене поведінку та пункти послідовності, я написав невеличку програму:
#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; ^
Чому? Але, ймовірно, він автоматично відповість на відповідь мого першого запитання.
printf("2\n");