Пересчитывается ли условие цикла после каждой итерации?

Допустим, у меня есть цикл, в условии которого что нибудь вычисляется.

int x = ...;
for (int M = 1; M < f(x); M++) {
...    //x не изменяется
}

Будет ли функция в условии вычислять значение после каждой итерации цикла, или компиляторы достаточно умные чтобы просто запомнить значение которое получилось в первый раз. Желательно (но не обязательно) дать ответ с ссылкой на какуюнибудь документацию или стандарт.


Ответы (1 шт):

Автор решения: Mikhailo

Конечно, пересчитывается.

Оптимизатор может выбросить пересчет, если функция простая и не меняет своего значения во время работы цикла, так что компилятор в состоянии это понять.

→ Ссылка