Вопрос:
Я только начал программировать в C++, а во время кодирования я начал замечать, что у меня было много для циклов в моем коде, тогда я начал думать.
In для циклов, когда вы создаете переменные типа: for (int **i**=1;i<10;i++), что происходит с i после цикла?
Можно ли создать несколько циклов с одним и тем же именем переменной?
Как создавать переменные внутри цикла?
Лучший ответ:
… что происходит с i после завершения цикла?
Это выходит за рамки.
Можно ли создать несколько циклов с одним и тем же именем переменной?
Да, это нормально и широко распространенная практика.
Как создавать переменные внутри цикла?
Переменные, созданные внутри циклов while, являются локальными для тела while. Они отличаются от запущенных переменных, созданных в первой части заголовка цикла for, который выполняется только до того, как цикл будет введен первым.
Ответ №1
Это зависит, если вы определяете значение итерации i внутри переменной for() это локальная переменная и объявляется внутри for(), поэтому вы не должны использовать ее для другого цикла внутри for() (кроме того, у вас есть хорошая причина).
Следующий код, например, будет вызывать ошибку, потому что переменная i не объявляется вне цикла for(), которая не может быть доступна внутри main(){}:
#include<cstdlib> #include<iostream> int main() { for (int i = 5; i > 0; i—) { std::cout << «Iteration: » << i << std::endl; } std::cout << «Iteration outside of ‘for’: » << i << std::endl; // Error return 0; } Ответ №2
Переменные, созданные в цикле, являются переменными, которые не сохраняют это значение после цикла. Это только временная ценность. Например, этот код будет печатать я = 10, поскольку вы используете первую переменную “i”.
#include <iostream> using namespace std; int main() { int i = 0; for (i = 1; i<10; i++); cout << i; return 0; }
Мы находимся в c++, поэтому вы можете идеально создать другую переменную “i” в цикле, которая будет иметь временное значение:
#include <iostream> using namespace std; int main() { int i = 0; for (int i = 1; i<10; i++); cout << i; return 0; }
И он напечатает “i” не временное значение, которое равно 0.
Ответ №3Содержание
- что происходит с “i” после завершения цикла?
- Можно ли создать несколько циклов с одним и тем же именем переменной?
- Как создавать переменные внутри цикла? Заранее спасибо.
что происходит с “i” после завершения цикла?
“i” получит последнее значение, назначенное в введенном состоянии.
Можно ли создать несколько циклов с одним и тем же именем переменной?
Он будет зависеть от синтаксиса или оператора, используемого для запуска этого кода.
Хорошей практике будет присвоено другое имя переменной для различной декларации.
Это также относится к первому вопросу. Кроме того, вам нужно учитывать, где этот код будет использоваться, это в Интернете, мобильном приложении или программе.
Как создавать переменные внутри цикла? Заранее спасибо.
Лучшая практика – создавать переменные перед выполнением каких-либо условий или операторов.
Ответ №4
Обычно такие имена, как i j k, обычно используются, но на самом деле это обычная дурная практика. Имя переменной должно правильно отражать цель хранимого значения. Например, если он используется для индексации векторов элементов, тогда он должен быть назван item_index а не только i. Это может показаться излишним подробным, но такой подход помогает избежать общих ошибок, когда перепутаны переменные с именами общего типа, например, сравните это frobs[i] = some_frob; bars[j] = some_bar; frobs[i] = some_frob; bars[j] = some_bar; с frobs[bar_index] = some_frob; bars[frob_index] = some_bar; frobs[bar_index] = some_frob; bars[frob_index] = some_bar; , Фактически в этом случае не только имя переменной индекса должно быть не общим, но и тип переменной не должен быть не общим, поэтому преобразование одного типа индексирования в другой потребует явного приведения. Я думаю, что ситуация с наличием нескольких типично названных переменных похожа на трехзвездочный программист в том смысле, что это никогда не должно происходить в правильно написанном коде.
Переменные, объявленные внутри области цикла, не видны вне области цикла, поэтому проблем нет. Однако конструкция for(int i=1;i<10;i++) на самом деле является синтаксической ловушкой, поскольку она игнорирует нормальные правила определения области видимости и делает переменную i объявленную вне области цикла видимой внутри области видимости. Это фактически отличается от C, где объявление переменной внутри конструкции for запрещено. В основном
for(int i = 1; i < 10; ++i) { // loop body } // i is not visible here i = 42; // error
в C++ является более компактным эквивалентом
{ int i; for(i = 1; i < 10; ++i) { /* loop body */ } } /* i is not visible here */ i = 42; /* error */
в C.
Некоторые компиляторы, однако, может продемонстрировать нестандартное поведение и позволяют переменной, объявленной внутри for конструкции будет виден даже после того, как for цикла завершился. Например Visual C++ с /Zc:forScope-
for(int i = 1; i < 10; ++i) { // loop body } // i is still visible here i = 42; // no error