Почему люди не инициализируют i глобально?

#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");
    }
}
 

Или … это так? (Играет зловещая органная музыка. Вороны каркают. Сирены на расстоянии.)