Questions sur la POO dans MQL5 - page 92

 

Vladimir Simakov:

int CSetting::sign=1<<31;
int CSetting::_sign=1<<11;
int CSetting::mean=0xFFFFFFFF>>21;

OUI !

Je n'aurais jamais deviné que les valeurs variables peuvent être définies par le décalage nécessaire !

Cool ! Merci !

 

Avec une économie totale d'espace :

void OnStart()
{

   int a=2; // 0,1,2
   int b=7; // 0,1,2
   int c=7; // 0,1,2,3,4,5,6,7
   int d=12345;  
   
   int v=a+b*3+c*(3*8)+d*(3*8*8);
   
   d=v/(3*8*8);
   v%=(3*8*8);
   
   c=v/(3*8);
   v%=(3*8);   
   
   b=v/3;
   a%=3;     
   
   Alert(a," ",b," ",c," ",d);
  
} 
 
Vladimir Simakov:

une autre question... Existe-t-il un moyen d'obtenir un int 12 bits via l'union ?... Peu importe comment ))))

ZS : idéalement un int de 9-15 bits, le signe n'est pas un problème, c'est à dire qu'il est possible d'utiliser unsigned int (dans les dernières versions MQL a apprisunsigned int, il est possible de l'utiliser à la place de uint )

 

Icho :

void OnStart()
{
   int a=2; // 0,1,2
   int b=3; // 0,1,2
   int c=7; // 0,1,2,3,4,5,6,7
   int d=12345;  

   int v=(d<<8)|(c<<5)|(b<<2)|a;
   
   a=v&3;
   v>>=2;
   b=v&7;
   v>>=3;   
   c=v&7;  
   v>>=3;      
   d=v;
   
   Alert(a," ",b," ",c," ",d);

}
 
Igor Makanu:

une autre question... Existe-t-il un moyen d'obtenir un int 12 bits via l'union ?... Peu importe comment ))))

SZY : 9-15 bit int idéalement, le signe à allouer n'est pas un problème, c'est-à-dire qu'il est possible unsigned int (dans les dernières versions MQL a apprisunsigned int, il est possible d'utiliser au lieu de uint )

Probablement pas. Il n'y a pas encore de variables de type demi-octet.

 
Dmitry Fedoseev:

Probablement pas. Il n'y a pas encore de demi-octets de variables.

Pourquoi pas ? Encodez et masquez les bits requis, n'importe quel nombre de bits peut être utilisé.

mais le problème est de ne pas tout gâcher ;)

UPD : en googlant une telle question, lisez au moins ce qu'ils conseillenthttps://stackoverflow.com/questions/29529979/10-or-12-bit-field-data-type-in-c.

 
Igor Makanu:

Pourquoi pas ? Encoder et masquer les bits requis, n'importe quel nombre de bits peut être utilisé.

mais le problème est de ne pas tout gâcher ;)

Alors vous pouvez aussi vous passer de syndicat.

 
Dmitry Fedoseev:

Alors vous pouvez aussi vous passer du syndicat.

oui, le syndicat est plus un problème qu'une commodité

[Supprimé]  

Une idée de la raison pour laquelle le compilateur utilise la méthode dans la classe de base ?

Dossiers :
Code_it.mq5  2 kb
 
Nelson Wanyama:

Une idée de la raison pour laquelle le compilateur utilise la méthode dans la classe de base ?

Comme vous ne surchargez pas une fonction virtuelle, vous utilisez la surcharge.