Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 20

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
так??? Извольте.

Нет, я имел ввиду:

for( int i = 0; i < x; i++ )
{
}
for( int i = 0; i < x; i++ )
{
}
...

Да, а та конструкция, что написали Вы вообще не запустится.
 

 
Artyom Trishkin:
У каждой переменной есть своя область видимости. Даже внутри фигурных скобок - своя область видимости для переменной, объявленной в этой области - внутри фигурных скобок. Так зачем мне, например, в разных местах программы плодить переменные индекса цикла с разными именами, если я знаю, что они не пересекаются, и достаточно, и привычно, использовать имя такой переменной как "i" ?

Я с Вами не спорил.

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
так??? Извольте.
Вы же сами понимаете, что нарочно придумали дурной пример, который ни один в здравом уме программист не составит.
 
Alexey Kozitsyn:

Нет, я имел ввиду:

for( int i = 0; i < x; i++ )
{
}
for( int i = 0; i < x; i++ )
{
}
...


а смысл? Поделитесь пожалуйста опытом - в чем могут быть проблемы в данном случае, т.е если Ваш код был бы таким?

int i;
for( i = 0; i < x; i++ )
{
}
for( i = 0; i < x; i++ )
{
}
...
 
Renat Akhtyamov:

Я с Вами не спорил.

Это моя ветка. И там, где дают дурные не оптимальные советы, я вправе поправить человека. Вы, применительно к обсуждаемой ситуации даёте не верные советы.
 
Artyom Trishkin:
Это моя ветка. И там, где дают дурные не оптимальные советы, я вправе поправить человека. Вы, применительно к обсуждаемой ситуации даёте не верные советы.

Ваша ветка, тогда читайте внимательно и соотносите пост с ником, которому отвечаете.

Короче говоря - ошиблись адресом

 
Renat Akhtyamov:

а смысл? Поделитесь пожалуйста опытом - в чем могут быть проблемы в данном случае, т.е если Ваш код был бы таким?

int i;
for( i = 0; i < x; i++ )
{
}
for( i = 0; i < x; i++ )
{
}
...

Когда Вы инициализируете счетчик за пределами цикла - область видимости у него распространяется за предел этого цикла, что, обычно, не нужно. Тем самым Вы предоставляете плодотворную почву для возможных ошибок, например, если далее по коду у Вас будет переменная j, а Вы случайно назовете ее i. Или вместо индекса [1] массива напишите [i] и т.п.

Так что, переменные нужно инициализировать как можно ближе к месту их первого использования и стараться избегать большого количества глобальных переменных. Тем самым снижается перечень вероятных ошибок. 

 
Alexey Kozitsyn:

Когда Вы инициализируете счетчик за пределами цикла - область видимости у него распространяется за предел этого цикла, что, обычно, не нужно. Тем самым Вы предоставляете плодотворную почву для возможных ошибок, например, если далее по коду у Вас будет переменная j, а Вы случайно назовете ее i. Или вместо индекса [1] массива напишите [i] и т.п.

Так что, переменные нужно инициализировать как можно ближе к месту их первого использования и стараться избегать большого количества глобальных переменных. Тем самым снижается перечень вероятных ошибок. 

for(....) то здесь причем?

Я в ауте.

Если написано i=0 и i++???

Ну и поменяйте мне в другом цикле i?

Не получится

 
Renat Akhtyamov:

for то здесь причем?

Я в ауте.

Вы можете быть где и в чем угодно, это Ваше право. Вы просили объяснить - я объяснил.
 
Alexey Kozitsyn:
Вы можете быть где и в чем угодно, это Ваше право. Вы просили объяснить - я объяснил.

Здесь единственное нужно учесть, что после блока цикла i уже равно x при условии, что в цикле i<x

при этом Array[i] после for(...){} вернет ошибку выхода за границы массива и всё

Причина обращения: