Hatalar, hatalar, sorular - sayfa 2209

 
Slava :

Ve bu örneklerinizin tamamen teorik olmasına rağmen. Tamamen öğrenciler için. Aklı başında hiçbir programcı bunu üretime sokmaz.

Sonek ve önek artırma ve eksiltme aslında esas olarak döngülerde kullanılır. Bunlara artım ve eksiltme denir!

İşte örnekler

ve

Ön ek ve son ek işlemlerinin aynı şekilde çalıştığını iddia ediyorsanız, bayrak elinizde, davul boynunuzdadır.

Bir önek artışı durumunda, son yinelemede başlatılmamış bir sıfır dizi öğesi ve bir dizi aralık dışı hatası alırsınız.

belki aklınıza gelmez yine sorumu tekrar edeyim

а при чем тут array[++i]=i и array[i++]=i , как я могу сравнить то, чего не было в беседе ...

Seçtiğin artık gözün üzerinde değil mi?

ve şimdi konuya gelelim, neden konuşmada görünen örnekte sonuç mql == 12 oluyor ve parmağınızdan çekip çekmemesi önemli değil, postfix ve prefix işlemlerindeki farkla, sonuç == 13 olmalıdır

not. ve artık iddia etmiyorum, çünkü şimdi kontrol ettim ve gerçekten postfix ve önek şimdi bir fark var, ancak yukarıdaki sorum derleme sırasında dilde yeterince belirsizlik olduğuna ve daldaki birine saldırmadan önce, bu UB'lerle uğraşmadan önce, hiçbir şeyimiz olmadığına inanmak için sebep veriyor. onunla yap

Bu arada, zaten küreklenmiş sertifikaya bakıyorum))

 
Konstantin :

belki aklınıza gelmez yine sorumu tekrar edeyim

Seçtiğin artık gözün üzerinde değil mi?

ve şimdi konuya gelelim, neden konuşmada görünen örnekte sonuç mql == 12 oluyor ve parmağınızdan çekip çekmemesi önemli değil, postfix ve prefix işlemlerindeki farkla, sonuç == 13 olmalıdır

not. ve artık iddia etmiyorum, çünkü şimdi kontrol ettim ve gerçekten postfix ve önek şimdi bir fark var, ancak yukarıdaki sorum derleme sırasında dilde yeterince belirsizlik olduğuna ve daldaki birine saldırmadan önce, bu UB'lerle uğraşmadan önce, hiçbir şeyimiz olmadığına inanmak için sebep veriyor. onunla yap

Bu arada, zaten küreklenmiş sertifikaya bakıyorum))

Kaba olma.

Sonucun 13 olması gerektiğini kim söyledi? Yine, yan etkileri olan sonuçlar, büyük ölçüde optimizasyona bağlıdır. Böyle bir ifadeye optimizasyon uygulanmasa bile, uygulama devreye girer - değişkenin değeri kullanımdan hemen sonra veya ifade değerlendirildikten sonra değiştirilir. Hangi uygulama doğrudur?

UB ile ilgilenmeyeceğiz, bu yüzden tanımsız ve açıkça yazdı: "bunu yapma"

Sertifikayı nerede küreklediniz? Bu yüzden, 18 Ocak tarihli MetaEditor yapı 1755'ten MQL5 referansını açtım. aynısı yazılıyor

Önemli Uyarı

int i=5;
int k = i++ + ++i;

Yukarıdaki ifadeyi bir programlama ortamından diğerine taşırken (örneğin, Borland C++'dan MQL5'e) hesaplama sorunları ortaya çıkabilir. Genel olarak, hesaplamaların sırası derleyici uygulamasına bağlıdır. Pratikte, azaltma sonrası (arttırma sonrası) uygulamanın iki yolu vardır:

  1. Azaltma sonrası (artış sonrası), ifadenin tamamı hesaplandıktan sonra değişkene uygulanır.
  2. Azaltma sonrası (artış sonrası), işlem sırasında hemen değişkene uygulanır .

Şu anda, azaltma sonrası (artış sonrası) hesaplamanın ilk yolu MQL5'te uygulanmaktadır. Ancak bu özelliği bilerek bile, kullanımını denemeniz önerilmez.


Orijinal ifadeniz, postfix ve prefix işlemleri arasında hiçbir fark olmadığıydı. Değil mi?

 
Slava :

Kaba olma.

Sonucun 13 olması gerektiğini kim söyledi? Yine, yan etkileri olan sonuçlar, büyük ölçüde optimizasyona bağlıdır. Böyle bir ifadeye optimizasyon uygulanmasa bile, uygulama devreye girer - değişkenin değeri kullanımdan hemen sonra veya ifade değerlendirildikten sonra değiştirilir. Hangi uygulama doğrudur?

UB ile uğraşmayacağız, bu yüzden tanımsız ve açıkça yazdı: "Bunu yapma"

Sertifikayı nerede küreklediniz? Bu yüzden, 18 Ocak tarihli MetaEditor yapı 1755'ten MQL5 referansını açtım. aynısı yazılıyor

Önemli Uyarı

int i=5;
int k = i++ + ++i;

Yukarıdaki ifadeyi bir programlama ortamından diğerine taşırken (örneğin, Borland C++'dan MQL5'e) hesaplama sorunları ortaya çıkabilir. Genel olarak, hesaplamaların sırası derleyici uygulamasına bağlıdır. Pratikte, azaltma sonrası (arttırma sonrası) uygulamanın iki yolu vardır:

  1. Azaltma sonrası (artış sonrası), ifadenin tamamı hesaplandıktan sonra değişkene uygulanır.
  2. Azaltma sonrası (artış sonrası), işlem sırasında hemen değişkene uygulanır .

Şu anda, azaltma sonrası (artış sonrası) hesaplamanın ilk yolu MQL5'te uygulanmaktadır. Ancak bu özelliği bilerek bile, kullanımını denemeniz önerilmez.


Orijinal ifadeniz, postfix ve prefix işlemleri arasında hiçbir fark olmadığıydı. Değil mi?

Kabalık etmiyorum, diyaloğu nereden başlattığınıza dikkat edin, yani. Hiç bilmediğim bir kodu çalıştırmak zorunda kaldım - süper

referansa göre - evet, ağır bir şekilde kürekle vurulmuştu. mql'de postfix ve prefix işlemleriyle (yaklaşık iki yıl önce) öğrendiğimde, şimdi açıkça hatırlamadığım bu malzeme

genel olarak konu kapandı bu fark tanıtıldı ve normal bir şekilde yapıldı sadece değiştirdiğiniz konusunda uyarmanız yeterli

[Silindi]  
. ... Rick D. ... . :
RETAIL_HEDGING hesap türü olan bir pozisyonun kısmi kapanması hakkında bana bir soru söyleyin. Örneğin ben eksperden pozisyonun yarısını kapatıyorum, daha küçük lotlu yeni bir emir otomatik olarak açılmalıdır. Peki, yeni bir siparişin hangi noktada terminalde olması garanti edilir? PositionClosePartial'den hemen sonra görünmesi gerekmediğini ve OnTrade'de bir yerde yakalanması gerektiğini doğru anlıyor muyum?
Kendi soruma cevap vermeye çalışacağım. PositionClosePartial çağrıldığında, kapalı emir bileti CTrade::ResultOrder()'a döndürülür ve pozisyon bileti aynı kalır, ancak pozisyonun kendisi azaltılmış lot ile olur. PositionClosePartial'a yapılan çağrının, tek bir işlemde pozisyonda senkronize bir düşüşe ve emir geçmişinde bir değişikliğe yol açtığı sonucuna varmaya çalışacağım.
 

Bu şey de ne?

 2018.05 . 15 12 : 50 : 04.594 Pred_Find (GBPUSD,M1)   Access violation at 0x000000013F1C4945 read to 0xFFFFFFFFFFFFFFFF
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48A0 48895 C2418        mov        [rsp+ 0x18 ], rbx
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48A5 48897 C2420        mov        [rsp+ 0x20 ], rdi
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48AA 4156               push       r14
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48AC 4883 EC20          sub        rsp, 0x20
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48B0 488 BDA            mov        rbx, rdx
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48B3 4 C8BF1            mov        r14, rcx
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48B6 4883 FA20          cmp        rdx, 0x20
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48BA 7307               jae         0x13f1c48c3
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48BC BB20000000        mov        ebx, 0x20
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48C1 EB13              jmp         0x13f1c48d6
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48C3 488 BCB            mov        rcx, rbx
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48C6 83 E107            and        ecx, 0x7
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48C9 740 B              jz         0x13f1c48d6
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48CB B808000000        mov        eax, 0x8
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48D0 482 BC1            sub        rax, rcx
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48D3 4803 D8            add        rbx, rax
2018.05 . 15 12 : 50 : 04.661 Pred_Find (GBPUSD,M1)                 000000013 F1C48D6 498 B4620          mov        rax, [r14+ 0x20 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48DA 33 FF              xor        edi, edi
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48DC 4885 C0            test       rax, rax
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48DF 0 F8485000000      jz         dword 0x13f1c496a
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48E5 483 B58F8          cmp        rbx, [rax- 0x8 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48E9 7616               jbe         0x13f1c4901
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48EB 488 B5008          mov        rdx, [rax+ 0x8 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48EF 33 C0              xor        eax, eax
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48F1 0 FB6CA            movzx      ecx, dl
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48F4 4883 E2FC          and        rdx, 0xfc
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48F8 80 E102            and        cl, 0x2
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48FB 480 F44C2          cmovz      rax, rdx
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C48FF EB0E              jmp         0x13f1c490f
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4901 488 BF8            mov        rdi, rax
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4904 488 B00            mov        rax, [rax]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4907 A802              test       al, 0x2
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4909 7509               jnz         0x13f1c4914
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C490B 4883 E0FC          and        rax, 0xfc
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C490F 4885 C0            test       rax, rax
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4912 75 D1              jnz         0x13f1c48e5
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4914 4885 FF            test       rdi, rdi
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4917 7451               jz         0x13f1c496a
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4919 488 BD7            mov        rdx, rdi
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C491C 498 D4E18          lea        rcx, [r14+ 0x18 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4920 E89B0F0000        call       0x13f1c58c0   ; # 5079 (terminal64.exe)
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4925 4 C8B47F8          mov        r8, [rdi- 0x8 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4929 4 C2BC3            sub        r8, rbx
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C492C 4983 F820          cmp        r8, 0x20
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4930 7224               jb         0x13f1c4956
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4932 4983 C0F8          add        r8, 0xf8
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4936 488 D5308          lea        rdx, [rbx+ 0x8 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C493A 4803 D7            add        rdx, rdi
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C493D 498 D4E18          lea        rcx, [r14+ 0x18 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4941 4 C8942F8          mov        [rdx- 0x8 ], r8
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)      crash -->   000000013 F1C4945 4 D894410F8        mov        [r8+rdx- 0x8 ], r8
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C494A 48895 FF8          mov        [rdi- 0x8 ], rbx
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C494E 4 D8B4618          mov        r8, [r14+ 0x18 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4952 41 FF5008          call       qword near [r8+ 0x8 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4956 488 BC7            mov        rax, rdi
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C4959 488 B5C2440        mov        rbx, [rsp+ 0x40 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)                 000000013 F1C495E 488 B7C2448        mov        rdi, [rsp+ 0x48 ]
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   00 : 0x000000013F1C4945
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   01 : 0x000000013F63EA90
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   02 : 0x00000000FFFFFFFF
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   03 : 0x000000005A3CD7A0
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   04 : 0x000000013F6303ED
2018.05 . 15 12 : 50 : 04.662 Pred_Find (GBPUSD,M1)   
 
Konstantin :

\ yardıma göre - evet, ağır bir şekilde küreklenmiş. mql'de postfix ve prefix işlemleriyle (yaklaşık iki yıl önce) öğrendiğimde, şimdi açıkça hatırlamadığım bu malzeme

genel olarak konu kapandı bu fark tanıtıldı ve normal bir şekilde yapıldı sadece değiştirdiğiniz konusunda uyarmanız yeterli

İlgi uğruna, Haziran 2015'ten itibaren eski yapı 1159'u kontrol etmeye karar verdim. Referansı, Slava'nın alıntıladığı her şeyi içeriyor. Yani belki karıştırdığınız bir şey var.

[Silindi]  
Aleksey Vyazmikin :

Bu şey de ne?

Bu bir kilitlenme :) Servis masasına gidin!

 
Alexey Kozitsyn :

Bu bir kilitlenme :) Servis masasına gidin!

Açıkça bankayı kırdı :)

[Silindi]  
Aleksey Vyazmikin :

Açıkça bankayı kırdı :)

Olur)

 
Alexey Kozitsyn :

Olur)

Bu hatayı nasıl yerelleştireceğimi bilmiyorum? Sadece tüm senaryoyu vermek istemiyorum ve her şeyi kürekle atmak istemiyorum ....