Discussion de l'article "L'ordre de création et de destruction d'objets dans MQL5" - page 2

 

شكرا جزيلا

 

m_array[] a été copié à partir de la fonction GetPointer(arrray[i]), et devient donc de type POINTER_AUTOMATIC.

Nous n'avons pas besoin de la ligne 54 :

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

car MQL5 supprime POINTER_AUTOMATIC pour vous.

 

Bonjour,


Je n'arrive pas à comprendre cette section :

//--- ce bloc ne sera pas exécuté si execute==false
   if(execute)
     {
      CObjectB objB;
     }
//--- ce bloc sera exécuté si execute==false
   if(!execute)
     {
      CObjectC objC;
     }

Au début du code, il est indiqué que execute = false. Les mots : execute est égal à false.

Le premier IF : si execute est vrai, le bloc doit être exécuté. Mais dans le commentaire, il est dit que le bloc ne sera pas exécuté s'il est VRAI et qu'il passera au suivant.

Deuxième IF : si execute est FALSE, le bloc sera exécuté. Mais là encore, le commentaire indique que le bloc s'exécutera s'il est VRAI.

J'ai supposé que ! - est un symbole de négation.

Où est l'erreur dans mon raisonnement ?

 
kashi_ann:

Bonjour,


Je n'arrive pas à comprendre cette intrigue :

Au début du code, il est indiqué que execute = false. Les mots : execute égalent false.

Le premier IF : si execute est vrai, le bloc devrait être exécuté. Mais le commentaire indique qu'il ne sera PAS exécuté s'il est vrai et qu'il passera au suivant.

Deuxième IF : si execute est FALSE, le bloc s'exécutera. Mais là encore, le commentaire indique que le bloc s'exécutera s'il est vrai.

J'ai supposé que ! - est un symbole de négation.

Où est l'erreur dans mon raisonnement ?

J'ai souligné votre jugement erroné. Pour mémoire : "false" est Faux, "true" est Vrai.

Et pour plus de clarté, j'ai ajouté des commentaires :

//--- ce bloc ne sera pas exécuté si execute==false
//--- ce bloc sera exécuté si execute==true
   if(execute)
     {
      CObjectB objB;
     }
//--- ce bloc sera exécuté si execute==false
//--- ce bloc ne sera pas exécuté si execute==true
   if(!execute)
     {
      CObjectC objC;
     }
 
Vladimir Karputov:

Votre jugement erroné est surligné en couleur. Pour référence : "false" est Faux, "true" est Vrai.

Pour plus de clarté, j'ai ajouté des commentaires :

Ainsi... les entrées suivantes...

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

n'est-ce pas ?

 
kashi_ann:

D'accord. nous obtenons les notes suivantes.

d'accord ?

C'est l'essentiel.

 
Artyom Trishkin:

Il s'agit de l'essentiel.

Merci) Les bases sont la chose la plus importante)

Et merci de ne pas avoir la flemme de répondre)
 
kashi_ann:

D'accord. nous obtenons les notes suivantes.

d'accord ?

Il se trouve que oui, mais vous vouliez clairement utiliser == et non =.

 
Andrey Khatimlianskii:

Par coïncidence, oui, mais vous vouliez clairement utiliser == plutôt que =.

Nah))))) la signification et la différence entre = et == je n'ai pas encore compris) je suis au début de mon voyage).

 
kashi_ann:

Nah)))) la signification et la différence entre = et == que je n'ai pas encore comprises) je suis au tout début de mon voyage)).

"=" est un opérateur d'affectation et "==" est un opérateur de comparaison.