Пересчитывается ли условие цикла после каждой итерации?
Допустим, у меня есть цикл, в условии которого что нибудь вычисляется.
int x = ...;
for (int M = 1; M < f(x); M++) {
... //x не изменяется
}
Будет ли функция в условии вычислять значение после каждой итерации цикла, или компиляторы достаточно умные чтобы просто запомнить значение которое получилось в первый раз. Желательно (но не обязательно) дать ответ с ссылкой на какуюнибудь документацию или стандарт.
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Конечно, пересчитывается.
Оптимизатор может выбросить пересчет, если функция простая и не меняет своего значения во время работы цикла, так что компилятор в состоянии это понять.