Что означает «предыдущее значение должно быть доступно только для определения значения, которое будет сохранено»?

Из ответа Прасуна на вопрос о «Неопределенном поведении и точках последовательности», я не понимаю, что означает следующее

.. Доступ к предыдущему значению должен осуществляться только для определения значения, которое будет сохранено.

В качестве примеров приводятся следующие примеры Undefined Behavior в C ++:

  1. a [i] = i ++;
  2. int x = i + i ++;

Несмотря на данные объяснения там я не понимаю эту часть (думаю, я правильно понимаю остальную часть ответа).


Я не понимаю, что не так в приведенных выше примерах кода. Я думаю, что у них есть четко определенные шаги для компилятора, как показано ниже.

a [i] = i ++;

  • a [i] = i;
  • i = i + 1;

int x = i + i ++;

  • x = i + i;
  • i = i + 1;

Что мне не хватает? Что означает «предыдущее значение должно быть доступно только для определения значения, которое будет сохранено» ?

5
задан Community 23 May 2017 в 12:21
поделиться