Fragen zu OOP in MQL5 - Seite 92

 

Vladimir Simakov:

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

YES!

Ich wäre nie auf die Idee gekommen, dass variable Werte durch die notwendige Verschiebung gesetzt werden können!

Cool! Danke!

 

Mit absoluter Raumersparnis:

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:

eine andere Frage... Gibt es irgendeine Möglichkeit, einen 12-Bit-Int über Union zu erhalten ... egal wie ))))

ZS: idealerweise ein 9-15 Bit int, das Vorzeichen ist kein Problem, d.h. es ist möglich, unsigned int (in den letzten Builds MQL hatunsigned int gelernt, ist es möglich, anstelle von uint verwenden)

 

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:

eine andere Frage... Gibt es irgendeine Möglichkeit, einen 12-Bit-Int über Union zu erhalten ... egal wie ))))

SZY: 9-15 bit int idealerweise, das Vorzeichen zuzuordnen ist kein Problem, d.h. es ist möglich unsigned int (in letzten Builds MQL hatunsigned int gelernt, es ist möglich, anstelle von uint zu verwenden)

Wahrscheinlich nicht. Es gibt noch keine Halbbyte-Variablen.

 
Dmitry Fedoseev:

Wahrscheinlich nicht. Es gibt noch keine Halbbytes von Variablen.

Kodierung und Maskierung der erforderlichen Bits, wobei eine beliebige Anzahl von Bits verwendet werden kann

aber das Problem ist, es nicht zu vermasseln ;)

UPD: Wenn Sie eine solche Frage googeln, sollten Sie zumindest lesen, was sie ratenhttps://stackoverflow.com/questions/29529979/10-or-12-bit-field-data-type-in-c

 
Igor Makanu:

Warum nicht? Verschlüsselung und Maskierung der erforderlichen Bits, jede Anzahl von Bits kann verwendet werden

aber das Problem ist, es nicht zu vermasseln ;)

Dann können Sie auch ohne Gewerkschaft auskommen.

 
Dmitry Fedoseev:

Dann können Sie auch auf die Gewerkschaft verzichten.

Ja, die Gewerkschaft ist eher ein Problem als ein Vorteil.

 

Irgendeine Idee, warum der Compiler die Methode in der Basisklasse verwendet?

Dateien:
Code_it.mq5  2 kb
 
Nelson Wanyama:

Irgendeine Idee, warum der Compiler die Methode in der Basisklasse verwendet?

Da Sie eine virtuelle Funktion nicht überschreiben, verwenden Sie die Überladung.