Несмотря на то, что операнды оператора +
могут оцениваться в любом порядке, поведение не определено, поскольку оно нарушает 2-е правило
1) Между предыдущей и следующей точкой последовательности объект должен иметь свое сохраненное значениеизменено не более одного раза путем оценки выражения.
2) Кроме того, к предыдущему значению следует обращаться только для определения значения, которое будет сохранено .
Ниже четко определены
c = foo(a-1) + a ;
Прочитайте эту запись FAQ для лучшего понимания неопределенного поведения и точек последовательности.