В этом C-FAQ дается около sequence point;Точки последовательности и побочные эффекты в C
В стандарте указано, что;
Между предыдущей и следующей точками последовательности объект должен иметь значение хранимого значения, измененное не более одного раза путем оценки выражения. Кроме того, к предыдущему значению следует обращаться только для определения значения, которое необходимо сохранить.
В примерах
i = i++;
a[i] = i++;
это ясно из первого предложения утверждения, что эти примеры являются результатами в непредсказуемом поведении.
В объяснении второго предложения утверждения сказано, что;
второе предложение говорит: если объект записывается в полном выражении, любые и все доступы к нему в то же самое выражение должно быть непосредственно вовлечены в вычислении значения должны быть записаны. Это правило эффективно ограничивает юридические выражения теми, в которых доступ явно предшествует модификации. Например, старый резерв
i = i + 1
допускается, поскольку доступ I используется для определения I, конечное значение. Пример
a[i] = i++
запрещен, потому что один из доступов I (один в [I]) не имеет ничего общего со значением, которое заканчивает тем, что хранится в I (который бывает в i ++), и поэтому нет хорошего способа определить.
Мои вопросы:
1. Что это значит, , если объект написан в полном выражении, любые и все обращения к нему в пределах одного и того же выражения должны непосредственно участвовать в вычислении значения, которое должно быть записано.?
2.Что делает это означает, по, пример a[i] = i++
запрещенный потому, что один из доступов I (один в [I]) не имеет ничего общего со значением, которое заканчивает тем, что хранится в I (что происходит в i ++)
Может ли кто-нибудь объяснить это каким-то простым способом?
эй @haccks согласно вашему второму объяснению, вы предположили, что значение, которое мы пишем, это «i», но на самом деле это [i] .... путаница для меня. Пожалуйста, покажите мне путь! – YakRangi
@Bayant_singh; В какой строке? – haccks
Между предыдущей и следующей точками последовательности объект должен иметь измененное значение хранимого значения не более одного раза путем оценки выражения. – YakRangi