Определенное поведение для выражений

Стандарт C99 говорит в $ 6.5.2.

Между предыдущей и следующей точкой последовательности объект должен иметь свое сохраненное значение, измененное не более одного раза путем оценки выражения. Более того,предыдущее значение должно быть прочитано только для определения значения, которое будет сохранено.

(акцент мной)

Далее следует отметить, что следующий пример действителен (что на первый взгляд кажется очевидным)

a[i] = i;

Хотя в нем прямо не указано, чтоa а такжеi находятся.

Хотя я считаю, что это не так, я хотел бы знать, охватывает ли этот пример следующий случай:

int i = 0, *a = &i;
a[i] = i;

Это будетне изменить значениеi, но получить доступ к значениюi определить адрес, куда поставить значение. Или не имеет значения, что мы присваиваем значениеi который уже хранится вi? Пожалуйста, пролите немного света.

Бонусный вопрос; Что оa[i]++ или жеa[i] = 1?

Ответы на вопрос(2)

Ваш ответ на вопрос