В C ++ для пользовательских типов a + b
- это вызов функции, и стандарт гласит:
§5.2.2.8 - [...] Порядок оценкиаргументов функции не указано .[...]
Для нормальных операторов стандарт гласит:
§5.4 - Кроме случаев, где указано, порядок вычисления операндовотдельных операторов и подвыражений отдельных выражений, а также порядок возникновения побочных эффектов не определено .[...]
Они не были изменены для C ++ 11.Тем не менее, формулировка второго варианта говорит о том, что порядок « unsequenced », а не не указан, но по сути тот же.
У меня нет копииСтандарт C, но я думаю, что там тоже самое.