Здравствуйте, я нашел эту программу на каком-то сайте.Что меня смущает, так это то, что эта программа изменяет один и тот же объект и использует его в том же выражении, таким образом, это неопределенное поведение?или это нормально, потому что оператор запятой ,
гарантирует оценку слева направо?
int x = 10, y;
// The following is equavalent to y = x++
y = (x++, printf("x = %d\n", x), ++x, printf("x = %d\n", x), x++);
// Note that last expression is evaluated
// but side effect is not updated to y
printf("y = %d\n", y);
printf("x = %d\n", x);
Выход:
x = 11
x = 12
y = 12
x = 13