Discussão do artigo "A Ordem de Destruição e Criação do Objeto em MQL5" - página 2

 

شكرا جزيلا

 

m_array[] foi copiado da função GetPointer(arrray[i]), portanto, eles se tornam do tipo POINTER_AUTOMATIC.

Não precisamos da linha 54:

 if(CheckPointer(m_array[i])==POINTER_DYNAMIC) delete(m_array[i]);

porque a MQL5 exclui o POINTER_AUTOMATIC para você.

 

Boa tarde,


Não consigo entender esta seção:

//--- este bloco não será executado se execute==false
   if(execute)
     {
      CObjectB objB;
     }
//--- este bloco será executado se execute==false
   if(!execute)
     {
      CObjectC objC;
     }

No início do código, está definido que execute = false. As palavras: execute é igual a false.

O primeiro IF: se execute for verdadeiro, o bloco deve ser executado. Mas, no comentário, ele diz que NÃO será executado se for VERDADEIRO e passará para o próximo.

Segundo IF: se execute for FALSO, o bloco será executado. Mas, novamente, o comentário diz que o bloco será EXECUTADO se for VERDADEIRO.

Presumi que ! - é um símbolo de negação.

Onde está o erro em meu raciocínio?

 
kashi_ann:

Boa tarde,


Não consigo entender essa trama:

No início do código, está definido que execute = false. As palavras: execute é igual a false.

O primeiro IF: se execute for verdadeiro, o bloco deve ser executado. Mas o comentário diz que ele NÃO será executado se for verdadeiro e passará para o próximo.

Segundo IF: se execute for FALSO, o bloco será executado. Mas, novamente, o comentário diz que o bloco será EXECUTADO se for Verdadeiro.

Presumi que ! - é um símbolo de negação.

Onde está o erro em meu raciocínio?

Eu destaquei seu julgamento errôneo. Para referência: "falso" é Falso, "verdadeiro" é Verdadeiro.

E para deixar tudo mais claro, acrescentei comentários:

//--- este bloco não será executado se execute==false
//--- esse bloco será executado se execute==verdadeiro
   if(execute)
     {
      CObjectB objB;
     }
//--- este bloco será executado se execute==false
//--- este bloco não será executado se execute==true
   if(!execute)
     {
      CObjectC objC;
     }
 
Vladimir Karputov:

Seu julgamento errôneo é destacado em cores. Para referência: "false" é Falso, "true" é Verdadeiro.

E para deixar mais claro, acrescentei comentários:

Então... as seguintes entradas...

if(execute = true) и if(execute) - тожественны?
if(execute = false) и if(!execute) - тоже?

certo?

 
kashi_ann:

Está bem. Recebemos as seguintes observações.

certo?

É o básico.

 
Artyom Trishkin:

É o básico.

Obrigado) O básico é a coisa mais importante)

E obrigado por não ter preguiça de responder)
 
kashi_ann:

Está bem. Recebemos as seguintes observações.

certo?

Acontece que sim, mas você claramente queria usar ==, não =.

 
Andrey Khatimlianskii:

Por coincidência, sim, mas você claramente queria usar == em vez de =.

Nah))))) o significado e a diferença entre = e == eu ainda não descobri) Estou no início de minha jornada).

 
kashi_ann:

Nah)))) o significado e a diferença entre = e == eu ainda não descobri) Estou no início de minha jornada)).

"=" é um operador de atribuição e "==" é um operador de comparação.