MQL5中的OOP问题 - 页 92

 

Vladimir Simakov:

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

是的!

我从来没有猜到,变量值可以通过必要的移位来设置 !

酷!谢谢

 

具有完全经济的空间。

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:

另一个问题...有什么方法可以通过union获得12位int吗?不要紧,))))

ZS:最好是一个9-15位的int,符号不是问题,也就是说可以无符号int(在最后的构建中,MQL已经学会了无符号int,可以用它代替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:

另一个问题...有什么方法可以通过union获得12位int吗?不要紧,))))

SZY: 最好是9-15位的int,分配的符号不是问题,也就是说可以用无符号的int(在最后的版本中,MQL已经学会了无符号的int,可以代替uint来使用)。

可能不会。目前还没有半字节的变量。

 
Dmitry Fedoseev:

可能不会。目前还没有半字节的变量。

为什么不呢? 对所需的比特进行编码和屏蔽,可以使用任何数量的比特

但问题是不要把它搞砸了;)

UPD:在谷歌上搜索这样的问题,至少要看他们的建议https://stackoverflow.com/questions/29529979/10-or-12-bit-field-data-type-in-c

 
Igor Makanu:

为什么不呢? 编码和屏蔽所需的比特,任何数量的比特都可以被使用

但问题是不要把它搞砸了;)

那么你也可以不参加工会。

 
Dmitry Fedoseev:

那么你也可以不参加工会。

是的,工会是一个问题,而不是一种便利。

 

知道为什么编译器在基类中使用这个方法吗?

附加的文件:
Code_it.mq5  2 kb
 
Nelson Wanyama:

知道为什么编译器在基类中使用这个方法吗?

因为你没有覆盖一个虚拟函数,你使用的是重载。