Я читал K&R и наткнулся на этот пример о неопределенности в поведении при оценке выражения вроде a[i]=i++
; Спецификация C99 в $ 6.5.2 говорит, что
Между предыдущей и следующей точкой последовательности сохраненное значение объекта должно быть изменено не более одного раза путем вычисления выражения. Кроме того, предыдущее значение должно считываться только для определения сохраняемого значения.
Приведенный выше пример от K&R подходит для первого утверждения. Пожалуйста, объясните, как это не удается на втором.
Говорит ли стандарт что-нибудь о порядке оценки подвыражений в случае задействования точек последовательности. Например. a[i++] || b[i++]
. Я знаю, что они оцениваются слева направо, но как это можно вывести из приведенного выше утверждения или где-то это явно указано в стандарте?
i+++++i
вопросов в неделю. Что касается конкретного случая, почему оператор присваивания не является точкой последовательности, кто-то также связал это сообщение. - person Lundin   schedule 30.01.2012