Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 210

 
fxsaber # :

anlamadım Sıfırlama yararlı bir şeydir, bu yüzden mantıklıdır.

Sıfırlama için ZeroMemory var ve bu sıfırlama genellikle düzgün çalışmıyor - işte örnekler

 
A100 # :

Sıfırlama için ZeroMemory var ve bu sıfırlama genellikle düzgün çalışmıyor - işte örnekler

Harika çalışıyor, kullanıyorum.

 
fxsaber # :

Harika çalışıyor, kullanıyorum.

Eğer harikaysa, bu örnek neden F5 üzerinden donuyor da ZeroMemory üzerinden donmuyor?

Ve neden burada {} ile derlenmiş, ancak ZeroMemory ile değil?

 
A100 # :

Eğer harikaysa, bu örnek neden F5 üzerinden donuyor da ZeroMemory üzerinden donmuyor?

Çünkü bu sadece düzeltilecek başka bir hata.

Ve neden burada - {} ile derleniyor, ancak ZeroMemory ile değil

Bu örnekte {} çalışır.

 
fxsaber # :

Bu örnekte {} çalışır.

Bu, çalışan ve aynı zamanda düzeltilecek ve derlenmeyecek bir hatadır.

 
A100 # :

Bu, çalışan ve aynı zamanda düzeltilecek ve derlenmeyecek bir hatadır.

Peki iddia ne? Hızın kritik olduğu yerlerde {} mekanizmasını kullanmamak için hiçbir neden göremiyorum.

 
fxsaber # :

Peki iddia ne? Hızın kritik olduğu yerlerde {} mekanizmasını kullanmamak için hiçbir neden göremiyorum.

Hareket halindeyken " muhteşem " mekanizmanın (!) zaten iki hata gösterdiği gerçeğine. Aynı zamanda, zamana göre test edilmiş bir alternatif var - ZeroMemory, bu da daha hızlı (en azından F5 aracılığıyla). Seçim belli

 
A100 # :

Hareket halindeyken " muhteşem " mekanizmanın (!) zaten iki hata gösterdiği gerçeğine.

Bu hataların savaş kullanımıyla hiçbir ilgisi yoktur.

Aynı zamanda, zamana göre test edilmiş bir alternatif var - ZeroMemory, bu da daha hızlı (en azından F5 aracılığıyla). Seçim belli

Aşağıdakilerden hangisinin daha özlü ve mantıklı olduğuna dair hiçbir soru olmadığını düşünüyorum.

 int i = 0 ;

int j;
j = 0 ;

Dizilerde de durum aynı.

 
fxsaber # :

Bu hataların savaş kullanımıyla hiçbir ilgisi yoktur.

Aşağıdakilerden hangisinin daha özlü ve mantıklı olduğuna dair hiçbir soru olmadığını düşünüyorum.

Dizilerde de durum aynı.

İşte üçüncü (ve daha kaç tane var) hata (!):

 union X {
     int i;
    double x;
};
void OnStart ()
{
    X x[ 10000 ] = {}; //(*)
    bool b = true ;
    for ( int i = 0; i < ArraySize(x) && (b = (x[i].x == 0.0)); i++ );
     Print ( b );
}

Sonuç: yanlış - yani sıfırlama gerçekleşmez (!)

Ve ZeroMemory ile

    X x[ 10000 ];       //(*)
    ZeroMemory ( x ); //(**)

Sonuç: true - her şey yolunda - tam sıfırlama

Tabii ki , piyangoyu oynamak için , açıkça doğru olanı yerine daha kısa bir giriş (1 satır daha az) kullanın - bu sizin hakkınız

 
A100 # :

Ve ZeroMemory ile

Sonuç: true - her şey yolunda - tam sıfırlama

 struct MqlTick2 : private MqlTick {};

void OnStart ()
{
  MqlTick2 Ticks[ 4 ] = {}; // OK
  
   ZeroMemory (Ticks); // 'Ticks' - not allowed for objects with protected members or inheritance
}
Neden: