Вызывается ли функция внутри цикла проверки цикла цикла FOR на каждой итерации? - PullRequest
0 голосов
/ 12 января 2011

Если функция является частью цикла цикла в цикле FOR, вызывается ли эта функция на каждой итерации цикла или только на первой итерации для настройки цикла.

, например

for (i = 0; i < strlen(someString); i++) {
    // Do Something 
}

Лучше ли определять форму перед циклом, значение которой равно длине строки?

, например

int length = strlen(someString);

for (i = 0; i < length; i++) {
    // Do Something
}

Ответы [ 2 ]

0 голосов
/ 12 января 2011

Это зависит от языка (и от того, есть ли вызов метода как часть теста, и от того, может ли компилятор определить, будет ли вызов метода изменять каждую итерацию)

Например, в некоторых ситуацияхVB.NET оценивает один раз, c # оценивает каждый раз.

Был недавний вопрос SO, который проиллюстрировал это: Почему C # выполняет Math.Sqrt () медленнее, чем VB.NET?

0 голосов
/ 12 января 2011

Да, условие в цикле for проверяется на каждой итерации.Если функция, которую вы там вызываете, вообще дорогая, то вам непременно следует сохранить значение в переменной.Однако, если у вас короткий цикл, это действительно не будет иметь значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...