#c #initialization
#c #инициализация
Вопрос:
Итак, похоже, что «i» — это в значительной степени универсальный счетчик в C . Похоже, что в каждом цикле for люди повторно инициализируют ‘i’. Я должен спросить, почему они просто не инициализируют «i» глобально? ‘i’ все равно придется переопределять в каждом цикле, поэтому я не понимаю, почему может возникнуть какая-либо путаница.
Это просто кажется так:
#include <iostream>
int i=0;
int main()
{
for (i=0;i<3;i )
{
std::cout << i << "n";
}
for (i=0;i<5;i )
{
std::cout << "hello" << "n";
}
return 0;
}
легче читать и быстрее записывать, чем:
#include <iostream>
int main()
{
for (int i=0;i<3;i )
{
std::cout << i << "n";
}
for (int i=0;i<5;i )
{
std::cout << "hello" << "n";
}
return 0;
}
Комментарии:
1. Как это «я должен спросить, почему они просто не инициализируют «i» глобально?» не вопрос?
2. Это вопрос мнения, а не проблема, по крайней мере, у вас отличное имя
3. определение
i
вне цикла может привести к случайному использованиюi
, чего мы не хотим. Инициализация i в каждом цикле показывает наше намерение, чтобы это был индекс для перехода по этому циклу.4. Потому что люди по опыту узнали, что 1) глобальные переменные — это плохо, 2) объявление вещей как можно ближе к их использованию — это хорошо, и 3) сокращение нажатий клавиш не очень важно. Со временем вы также узнаете это.
5. Представьте, что функция алгоритма, которой нужен счетчик циклов, вызывает другую функцию алгоритма, которой нужен счетчик циклов, и оба они используют глобальный
i
… Это просто неправильно.
Ответ №1:
Отличная идея!
Вот программа, которая печатает «hellohello» пять раз:
int i;
void print_twice(const std::stringamp; s)
{
for (i = 0; i < 2; i )
{
std::cout << s;
}
std::cout << std::endl;
}
int main()
{
for (i = 0; i < 5; i )
{
print_twice("hello");
}
}
Или … это так? (Играет зловещая органная музыка. Вороны каркают. Сирены на расстоянии.)