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é

 

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.