Crazy
Developer
Ответ неверный. Верный ответ: комилятор может оптимизировать такой код ТОЛЬКО если имеет возможность заглянуть в код вызываемой функции.Автор оригинала: .des.
Компиляторы могут оптимизировать данный код и как правило делают это. Многие из них в состоянии понять изменяется ли в цикле строка. Многие компиляторы заглядывают и в функции, чтобы удостовериться, что возвращаемое значение зависит только от аргументов.
Контрольный пример:
Код:
int foo (char *);
int main (int argc, char** argv) {
int i, v = 0;
char* s = "foobar";
for (i=0; i < foo(s); i++) v+= s[i];
return v;
}