[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 721

 
Abzasc:

O objetivo não é multiplicar variáveis, muitas condições e contadores.




o objetivo é então escrever corretamente, e não usar abreviações de linguagem:

int a;
for(a=0;a<8;a++){
//здесь что то делаем
}
for(a=0;a<8;a++){
//делаем что нибудь другое
}
 
Abzasc:

O objetivo não é criar variáveis, muitas condições e contadores.

Portanto, por favor, o compilador permite que você faça tais coisas...

//+------------------------------------------------------------------+
int start()
  {
  bool flag;
  
   if(flag){
      for(int a = 0; a < 10;a++){
         Print("a = ", a);
      }
   }else{
      for(a = 10; a > 0;a--){
         Print("a = ", a);
      }
   }
  }
//+------------------------------------------------------------------+
A bandeira padrão é Falsa, portanto a primeira para loop em que a variável a é declarada não será executada, o que não impede que a mesma variável "não declarada" seja usada no outro ramo : )
 
Abzasc:

A condição se

aqui nós fazemos algo

caso contrário, se outra condição

fazer algo mais

O objetivo não é criar variáveis, muitas condições e contadores.

Isto não exige que você reinicialize a variável. Faça tudo de acordo com o que você escreveu e sua variável a será usada nos lugares certos em seus ramos lógicos sem reinicialização. Declare-o uma vez e use-o para seu benefício e para o benefício da humanidade. :) O principal é não se perder onde e para que serve...
 
ToLik_SRGV:

portanto, o primeiro para loop em que a variável a é declarada não será executado

O laço deve ser sempre executado.
 
IgorM:


o ponto de escrever corretamente, em vez de usar abreviações de linguagem:

O problema todo era a falta de {}, não era? Obrigado!
 
artmedia70:
Isto não exige que você reinicialize a variável. Faça tudo de acordo com o que você escreveu e sua variável a será usada nos lugares certos em seus ramos lógicos sem reinicialização. Declare-o uma vez e use-o para seu benefício e para o benefício da humanidade. :) O principal é não se perder onde e para que serve...
Fi-lo, em 715 pp, 18.07.2010 14:56, não coloquei parênteses depois do balcão...
 

O "efeito" mostrado acima prova que a MQL-machine procura primeiramente no arquivo EX4 as variáveis declaradas, e as cria independentemente dos ramos lógicos por completo. Por um lado, não economiza RAM e, por outro, pode criar construções similares, embora, em minha opinião, este estilo não seja a melhor opção.

 
Abzasc:
Todo o problema estava na falta de {}, não estava? Muito obrigado!


O problema todo estava na declaração da variável:

int a;

Eu o declaro e depois o uso onde e quando necessário, enquanto você tinha uma declaração repetida de uma variável - o mais provável é que o compilador não a tenha ignorado

Se você tem apenas uma declaração no laço, então você não precisa {}, mas se você tem mais, então você tem que colocar {}, caso contrário você vai procurar por que o laço não é calculado corretamente

SZZY: Se você acabou de começar, coloque parênteses curly depois de para, você vai pegar o jeito mais tarde

 
ToLik_SRGV:

O código do IgorM não dá nenhum erro. Acho que não será alocada uma memória dependendo do número de menções nas filiais, portanto não há problema.
 
Abzasc:
O laço deve ser sempre executado.

O que o laço tem a ver com isso? É apenas um exemplo de que uma variável criada em um bloco não conhecido para ser usada ainda está em "jogo" e será visível e utilizável durante todo o método start(), sem a necessidade de reinicializá-la, muito menos de desinicializá-la antes de ser reutilizada.