Страницы

Поиск по вопросам

среда, 27 ноября 2019 г.

В чем разница между двумя вариантами?

#c_sharp #c++ #c #циклы


В чем заключается разница при разном определении итерационной переменной? Влияет
ли на выделяемую память?

int i;
for (i = 0; i < someVal; i++) { }


и

for (int i = 0; i < someVal; i++) { }

    


Ответы

Ответ 1



Это будет влиять только на область видимости переменной i. В первом случае вы можете обратиться к переменной вне цикла, например: int i; for (i = 0; i < someVal; i++) { }; i = 2 + 2; Во втором случае область видимости i ограничена телом цикла.

Ответ 2



В дополнение к совершенно правильному ответу @Flownee: то, как и где именно объявлены переменные, не важно. Важно лишь то, в каком месте в коде эта переменная всё ещё нужна. Современные компиляторы на популярных платформах проводят агрессивную оптимизацию, и используют память переменной для других переменных не в конце области её видимости, а реально как только она больше не нужна в коде. В отсутствие использования переменной после цикла оба варианта равносильны, и по идее дадут одинаковое распределение памяти.

Комментариев нет:

Отправить комментарий