Я читал через K & R и я натолкнулся на этот пример об неопределенности в поведении при оценке выражения типа a[i]=i++
; C99 спецификации в $ 6.5.2 говорит, чтоПоследовательность точек и порядок оценки
Между предыдущей и следующей точкой последовательности объект должен быть его сохраненное значение модифицированного не более одного раза по оценке выражения. Кроме того, предыдущее значение должно быть считано только для определения значения, которое необходимо сохранить.
Приведенный выше пример из K & R имеет хорошее значение в первом утверждении. Пожалуйста, объясните, как это происходит на втором.
Знает ли стандарт что-либо о порядке оценки подвыражений в случае задействованных точек последовательности. Например. a[i++] || b[i++]
. Я знаю, что они оцениваются слева направо, но как это можно получить из приведенного выше утверждения или явно указано в стандарте где-то?
Возможный дубликат [Любая хорошая причина, по которой оператор присваивания не является точкой последовательности?] (Http://stackoverflow.com/questions/4362501/any-good-reason-why-assignment-operator-isnt-a- точка последовательности) – Suma
Возможный дубликат [Неопределенное поведение и точки последовательности] (http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points) – Lundin
@Lundin: Это C++. –