Domande su OOP in MQL5 - pagina 92

 

Vladimir Simakov:

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

SÌ!

Non avrei mai immaginato che i valori delle variabili potessero essere impostati dallo shift necessario!

figo! grazie!

 

Con una completa economia di spazio:

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:

un'altra domanda... C'è un modo per ottenere un int a 12 bit tramite l'unione? non importa come ))))

ZS: idealmente un int a 9-15 bit, il segno non è un problema, cioè è possibile unsigned int (nelle ultime build MQL ha imparatounsigned int, è possibile utilizzare invece di 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:

un'altra domanda... C'è un modo per ottenere un int a 12 bit tramite l'unione? non importa come ))))

SZY: 9-15 bit int idealmente, il segno da allocare non è un problema, cioè è possibile unsigned int (nelle ultime build MQL ha imparatounsigned int, è possibile invece di uint da usare)

Probabilmente no. Non ci sono ancora variabili half byte.

 
Dmitry Fedoseev:

Probabilmente no. Non ci sono ancora mezzi byte di variabili.

Perché no: codificare e mascherare i bit richiesti, qualsiasi numero di bit può essere usato

ma il problema è non rovinare tutto ;)

UPD: cercando su Google una domanda del genere, almeno leggete cosa consiglianohttps://stackoverflow.com/questions/29529979/10-or-12-bit-field-data-type-in-c

 
Igor Makanu:

Perché no? codificare e mascherare i bit richiesti, qualsiasi numero di bit può essere usato

ma il problema è non rovinare tutto ;)

Allora potete anche fare a meno del sindacato.

 
Dmitry Fedoseev:

Allora potete anche fare a meno del sindacato.

sì, l'unione è più un problema che una comodità

 

Qualche idea sul perché il compilatore usi il metodo nella classe base?

File:
Code_it.mq5  2 kb
 
Nelson Wanyama:

Qualche idea sul perché il compilatore usi il metodo nella classe base?

Poiché non state sovrascrivendo una funzione virtuale, state usando l'overloading.