Я задаю этот вопрос в основном в отношении программирования на С, но приветствуются идеи по любому языку.
Когда дело доходит до C, я знаю, что он допускает только объявления переменных в самом начале блока кода. И у меня сложилось впечатление, что нужно объявить все переменные, которые будут использоваться внутри функции, в самом начале функции. Но во многих случаях у меня будет переменная, которая используется только внутри цикла (или подобного блока).
Примером может служить временная переменная для некоторого возвращаемого значения:
while ( whatever ) {
int ret;
ret = getSomeValue();
}
или где может потребоваться удержание какого-либо состояния:
while ( whatever ) {
static int count=0;
count++;
}
Мне было интересно, считается ли это неправильным или есть ли какое-либо негативное влияние на объявление переменных в блоках потока управления, таких как if-else, для циклов, циклов while и т. Д.
Должны ли переменные всегда объявляться с максимально возможной областью видимости? как насчет статического объявления?
Редактировать :
Хорошо, я, наверное, должен был сказать, что я знаю, что C99 более либерален, когда речь идет о том, где вы объявляете переменные, но из большого количества кода на C, который я вижу, они все еще обычно объявляются сверху. Кроме того, я использую VS2K8, который все еще жалуется на объявления.
Кроме того, учитывая, что у меня есть 2 голоса, чтобы закрыть эту тему, я поясню, что меня больше интересуют аспекты производительности и компиляции, чем что-либо стилистическое.