Я понимаю, что перед точкой с запятой нет точки последовательности, но есть ли правдоподобное объяснение разыменованного указателя на использование старого значения 2 в выражении?+ = Цепочка оператора (с тире UB)
Или это может быть просто заявлено как неопределенное поведение?
int i=2;
int *x=&i;
*x+=*x+=i+=7;
Результат:
i= 13
+1 намного лучшее описание, чем у меня :) – badgerr
Это, безусловно, неопределенное поведение и не имеет ничего общего со стеками. –
AFAIK, если какое-то выражение меняет некоторую переменную более одного раза, это UB. Если x не указывает на i, это будет другая история. Может быть. –