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를 수신하는 것이 가능합니까? ... 방법의 본질이 아님)))

추신: 이상적으로는 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 :

그리고 여전히 그러한 질문은 ... 어떤 식 으로든 Union을 통해 12 비트 int를 수신하는 것이 가능합니까? ... 방법을 통한 요점이 아닙니다)))

추신: 이상적으로는 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 :

컴파일러가 기본 클래스에서 메서드를 사용하는 이유를 알고 있습니까?

가상 기능 을 재정의하지 않기 때문에 오버로딩을 사용하고 있습니다.