Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 20

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
certo???? Por favor.

Não, eu quis dizer:

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

Sim, e o projeto que você escreveu não vai funcionar em absoluto.

 
Artyom Trishkin:
Cada variável tem seu próprio escopo. Mesmo dentro dos suportes encaracolados, existe um escopo separado para a variável declarada nesse escopo - dentro dos suportes encaracolados. Então por que eu deveria, por exemplo, criar variáveis de índice de loop com nomes diferentes em lugares diferentes de um programa, se eu sei que elas não se sobrepõem, e é suficiente, e habitual, usar um nome de variável como "i"?

Eu não discuti com você.

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
certo???? Seja bem-vindo.
Você mesmo percebe que inventou deliberadamente um mau exemplo que nenhum programador sensato inventaria.
 
Alexey Kozitsyn:

Não, eu quis dizer:

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


qual é o objetivo? Por favor, compartilhe sua experiência - qual poderia ser o problema neste caso, ou seja, se seu código fosse como este?

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

Eu não estava discutindo com você.

Este é o meu fio condutor. E onde dou conselhos ruins e subótimos, tenho o direito de corrigir a pessoa. Você, no que diz respeito à situação em questão, está dando maus conselhos.
 
Artyom Trishkin:
Este é o meu fio condutor. E quando é dado um mau conselho sub-ótimo, tenho o direito de corrigir a pessoa. Você, com respeito à situação em questão, está dando maus conselhos.

Seu tópico, então leia-o cuidadosamente e relacione o post com o apelido ao qual você está respondendo.

Em resumo, você está no lugar errado.

 
Renat Akhtyamov:

mas qual é o objetivo? Por favor, compartilhe sua experiência - qual poderia ser o problema neste caso, ou seja, se seu código fosse assim?

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

Quando você inicializa um contador fora de um loop, seu escopo se estende além do loop, o que geralmente não é necessário. Assim, você fornece um terreno fértil para possíveis erros, por exemplo, se mais adiante no código você terá uma variável j, e você acidentalmente a chama de i. Ou ao invés de índice [1] você escreve [i], etc.

Portanto, as variáveis devem ser inicializadas o mais próximo possível de onde são utilizadas pela primeira vez e tentar evitar um grande número de variáveis globais. Isto reduz a lista de possíveis erros.

 
Alexey Kozitsyn:

Quando você inicializa um contador fora de um laço, seu escopo se estende além do laço, o que geralmente não é necessário. Ao fazer isso, você fornece um terreno fértil para possíveis erros, por exemplo, se mais abaixo o código você tem uma variável j e acidentalmente a chama de i. Ou ao invés de índice [1] você escreve [i], etc.

Portanto, as variáveis devem ser inicializadas o mais próximo possível de onde são utilizadas pela primeira vez e tentar evitar um grande número de variáveis globais. Isto reduz a lista de possíveis erros.

O que isso tem a ver com (....)?

Estou indignado.

Se diz i=0 e i+++?

Bem, mudar i em outro loop?

Não vai funcionar

 
Renat Akhtyamov:

O que isso tem a ver com o assunto?

Estou fora.

Você pode estar em qualquer lugar e em qualquer coisa, isso é seu direito. Você me pediu para explicar - eu expliquei.
 
Alexey Kozitsyn:
Você pode estar em qualquer lugar e em qualquer coisa, isso é seu direito. Você me pediu para explicar - eu expliquei.

A única coisa a considerar aqui é que depois do bloco de laço i já é igual a x, desde que no laço i<x

Array[i] depois de(...){} devolverá o erro de overrun do array e pronto