Преимущества подхода 1 является немного меньшим размером файла из-за менее текстовых символов в исходном коде:Каков лучший способ объявить фиктивные переменные для вложенных циклов?
int i, j; for (i = 0; i < numRows; i++) for (j = 0; j < numCols; j++) //<some code here>
Преимуществом подхода 2 является меньшей видимостью локальных переменными.
int i; for (i = 0; i < numRows; i++) { int j; for (j = 0; j < numCols; j++) //<some code here> }
Даже если различия в оптимизации ничтожны в сегодняшних современных компьютеров, которые подход считается «лучше» код?
Редактировать, чтобы уточнить, что этот вопрос не является дубликатом:
Этот вопрос основан на текущем стандарте C11, который не позволяет синтаксис, как это:
for (int i = 0; i < numRows; i++)
В C++ и C99, этот синтаксис вполне приемлем, тогда как C11 не допускает объявления переменных внутри оператора for
.
Редактировать, чтобы исправить дезинформацию:
Я думал, что я использовал C11, потому что я недавно скачал компилятор из CodeBlocks, так вот почему я сказал, C11 не допускает объявления переменных внутри for
заявления. Но, оказывается, я на самом деле использовал C90, что стало причиной моих проблем.
Я считаю, что компиляции будут эквивалентны, то есть, вероятно, лучше использовать второе, поскольку это предотвратит случайное использование j вместо i во внешнем цикле. Я не собираюсь публиковать это как ответ, хотя, поскольку у кого-то, более опытного с C, будет лучший ответ. –
см. Это http://stackoverflow.com/questions/7959573/declaring-variables-inside-loops-good-practice-or-bad-practice-2-parter – danishansari
Возможный дубликат [Объявление переменных внутри циклов, хорошей практики или плохая практика? (2 партера)] (http://stackoverflow.com/questions/7959573/declaring-variables-inside-loops-good-practice-or-bad-practice-2-parter) – tod