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:

もうひとつお聞きしたいのですが12bitのintをunionで取得する方法はないのでしょうか?どうってことはない )))

ZS: 理想的には9-15ビットのintで、符号は問題ありません、つまりunsigned intも可能です(最近のビルドでMQLはunsigned intを 学びました、uintの代わりに使うことができます)

 

伊調

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:

もうひとつお聞きしたいのですが12bitのintをunionで取得する方法はないのでしょうか?どうってことはない )))

ZS: 9-15ビットintが理想ですが、割り当てる符号は問題ありません、つまりunsigned intが可能です(最近のビルドでMQLはunsigned 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:

なぜコンパイラはベースクラスのメソッドを使用するのか、何か心当たりはありますか?

仮想関数を オーバーライドしているわけではないので、オーバーロードを使用していることになります。