В чем разница объявления переменной в цикле и перед циклом? - PullRequest
3 голосов
/ 30 апреля 2010

Посмотрите на этот пример:

int i;
for (i=1;i.......

и это:

for (int i=1;i........

Какая разница между ними?

Ответы [ 2 ]

10 голосов
/ 30 апреля 2010

Первый объявляет переменную в области за пределами цикла; после окончания цикла переменная будет существовать и использоваться. Второй объявляет переменную так, что она принадлежит области видимости цикла; после цикла переменная перестает существовать, предотвращая непреднамеренное / ошибочное использование переменной.

В C99, C ++, Java и других подобных языках вы найдете в основном второй синтаксис, так как он безопаснее - индекс цикла принадлежит циклу и не изменен / не используется в других местах Однако вы увидите много первого в более старом коде C, так как ANSI C не позволял объявлять переменную цикла в цикле подобным образом.

Чтобы привести пример:

int i;
// ... lots of stuff
for ( i = 0; i < 5; i++ ){
    printf("%d\n",i); // can access i; prints value of i
}
printf("%d\n",i); // can access i; prints 5

Для контраста:

for (int i = 0; i < 5; i++ ){
    std::cout << i << std::endl; // can access i; prints value of i
}
std::cout << i << std::endl; // compiler error... i not in this scope
2 голосов
/ 30 апреля 2010

Это будет зависеть от языка, который вы не указали: -)

В C (и некоторых других) область действия (в данном случае, в действительности, длительность) переменной отличается. Во-первых, переменная существует после цикла, потому что она объявлена ​​вне его.

В последнем случае он исчезает, когда цикл заканчивается, потому что его существование находится "внутри" тела цикла.

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