MoneyJinn : 0 indeksli eleman kaldırılır ve dizinin en son elemanı , yani indeks (n-1) ile kaldırılmalıdır; burada n, dizinin boyutudur.
Beklemek. İlk önce " ArrayResize(), ArraySetAsSeries() = true olduğunda dizi boyutunu küçültemedi " yazdınız. Onlar. "en taze" öğenin indeksi 0'a sahipsin. Doğru mu?
int OnInit() { firstwords.m_next=NULL; firstwords.m_prev=NULL;
sonuç aynı
kendin dene
Lütfen servis masasına yazınız . İşletim sistemini, bit derinliğini ve terminalin yapısını belirtin. Sorunun sürekli olarak yeniden üretildiği kaynakları ekleyin - anlayacağız.
TAMAM. Sonra dalma yapacağım. Bu nedenle, Print() işlevinin açıklamasında " Çift tip veri, noktadan sonra 16 ondalık basamak doğruluğuyla çıktı alınır" yazıyor. Aslında, Print() işlevinin biraz yuvarlatılmış veriler verdiği ortaya çıktı:
Konuyu gündeme getirdiğiniz için teşekkürler, yardıma Yazdırma işlevi için yeni ve daha eksiksiz bir örnek eklendi:
Misal:
voidOnStart ()
{
//--- выведем DBL_MAX с помощью Print(), это равносильно PrintFormat(%%.16G,DBL_MAX)Print ( "---- как выглядит DBL_MAX -----" );
Print ( "Print(DBL_MAX)=" , DBL_MAX );
//--- теперь выведем число DBL_MAX с помощью PrintFormat()PrintFormat ( "PrintFormat(%%.16G,DBL_MAX)=%.16G" , DBL_MAX );
//--- Вывод в журнал "Эксперты"// Print(DBL_MAX)=1.797693134862316e+308// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308//--- посмотрим как выводится тип floatfloat c=( float ) M_PI ; // нужно явно приводить к целевому типуPrint ( "c=" ,c, " Pi=" , M_PI , " (float)M_PI=" ,( float ) M_PI );
// c=3.14159 Pi=3.141592653589793 (float)M_PI=3.14159//--- покажем, что может произойти при арифметических операциях над вещественными типамиdouble a= 7 ,b= 200 ;
Print ( "---- перед арифметическими операциями" );
Print ( "a=" ,a, " b=" ,b);
Print ( "Print(DoubleToString(b,16))=" , DoubleToString (b, 16 ));
//--- разделим a на b (7/200)
a=a/b;
//--- теперь как будто восстановим значение в переменной b
b= 7.0 /a; // ожидается, что b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - но это не так//--- выведем вновь вычисленное значение bPrint ( "----- после арифметических операций" );
Print ( "Print(b)=" ,b);
Print ( "Print(DoubleToString(b,16))=" , DoubleToString (b, 16 ));
//--- вывод в журнал "Эксперты"// Print(b)=200.0// Print(DoubleToString(b,16))=199.9999999999999716 (видим, что на самом деле b уже не равно 200.0) //--- создадим очень маленькое значение epsilon=1E-013double epsilon= 1 e- 13 ;
Print ( "---- создадим очень маленькое число" );
Print ( "epsilon=" ,epsilon); // получим epsilon=1E-013//--- теперь вычтем эпсилон из числа b и выведем снова значение в журнал "Эксперты"
b=b-epsilon;
//--- выводим двумя способамиPrint ( "---- после вычитания epsilon из переменной b" );
Print ( "Print(b)=" ,b);
Print ( "Print(DoubleToString(b,16))=" , DoubleToString (b, 16 ));
//--- вывод в журнал "Эксперты"// Print(b)=199.9999999999999 (теперь значение b после вычитания эпсилон не может округлиться до 200)// Print(DoubleToString(b,16))=199.9999999999998578// (теперь значение b после вычитания эпсилон не может округлиться до 200)
}
anahtar kelimeler = BOŞ
neden o zaman Print("next======",curwords.m_next!=NULL); hata vermiyor mu?
çünkü
anahtar kelimeler .m_next !=NULL
Nesneleri oluştururken referansları geçersiz kılıyor musunuz?
Sonuçta, sevgilisini yaratırken NULL değil.
Dahası, geliştiriciler size CheckPointer işlevini verdi. kullanmak.
0 indeksli eleman kaldırılır ve dizinin en son elemanı , yani indeks (n-1) ile kaldırılmalıdır; burada n, dizinin boyutudur.
geçersiz
int OnInit()
{
firstwords.m_next=NULL; firstwords.m_prev=NULL;
sonuç aynı
kendin dene
kendin dene
ne denemeliyim :)
benim için her şey yolunda gidiyor :)
Simgeler gerektiğinde özelleştirilebilir ve görüntülenebilir.
Terminal Account klasörüne yazıyor, kısayolda /portable tuşunu belirtiyorum.
geçersiz
int OnInit()
{
firstwords.m_next=NULL; firstwords.m_prev=NULL;
sonuç aynı
kendin dene
Lütfen servis masasına yazınız . İşletim sistemini, bit derinliğini ve terminalin yapısını belirtin. Sorunun sürekli olarak yeniden üretildiği kaynakları ekleyin - anlayacağız.
TAMAM. Sonra dalma yapacağım. Bu nedenle, Print() işlevinin açıklamasında " Çift tip veri, noktadan sonra 16 ondalık basamak doğruluğuyla çıktı alınır" yazıyor. Aslında, Print() işlevinin biraz yuvarlatılmış veriler verdiği ortaya çıktı:
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))= 199,9999999999999716
Konuyu gündeme getirdiğiniz için teşekkürler, yardıma Yazdırma işlevi için yeni ve daha eksiksiz bir örnek eklendi:
Misal:
İki para birimi için Point nasıl bulunur?
mevcut araç için:
Sembol1 , Sembol2 para birimleri için söyle?
Nokta boyutu SymbolInfoDouble (sembol_adı, özellik) kullanılarak elde edilebilir.
ENUM_SYMBOL_INFO_DOUBLE
tanımlayıcı
Tanım
Emlak Tipi
SYMBOL_BID
Teklif - satılık en iyi teklif
çift
SYMBOL_ASK
Sor - en iyi satın alma teklifi
çift
SYMBOL_LAST
Son ticaretin yapıldığı fiyat
çift
SYMBOL_POINT
Bir noktanın değeri
çift