Как уже говорили другие, стандарты C и C ++ не определяют поведение, которое это будет производить.
Но для тех людей, которые не понимают, почему стандарты делают это, давайте рассмотрим пример из "реального мира":
1 * 2 + 3 + 4 * 5
Нет ничего плохого в вычислении 1 * 2 + 3
до того, как мы вычислим 4*5
. Тот факт, что умножение имеет более высокий приоритет, чем сложение, не означает, что нам нужно выполнить all умножение в выражении перед выполнением любого сложения. На самом деле существует много разных заказов, которые вы действительно могли бы выполнять в своих расчетах.
Если оценки имеют побочные эффекты, на результат могут влиять различные порядки оценки. Если стандарт не определяет поведение, не полагайтесь на него .