Errori, bug, domande - pagina 2209
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
E perché i suoi esempi sono puramente teorici. Sono puramente per studenti. Nessun programmatore sano di mente metterebbe queste cose in produzione.
L'incremento e il decremento del prefisso e del postfisso sono usati prima di tutto nei cicli. E si chiamano incrementi e decrementi!
Ecco alcuni esempi
и
Se sostenete che le operazioni di prefisso e postfisso funzionano allo stesso modo, allora bandiera in mano e tamburo sul collo.
Nel caso dell'incremento del prefisso, otterrete un elemento dell'array nullo non inizializzato e un errore di array fuori portata all'ultima iterazione.
Forse la tua mente alta non lo capisce, ripeterò la mia domanda ancora una volta.
Quello evidenziato è difficile da vedere per te?
Ora al punto, perché nell'esempio che appare nella conversazione, il risultato in mql == 12 e non importa se è stato fatto a mano o no, se c'è una differenza nelle operazioni postfix e prefix, il risultato dovrebbe essere == 13
ps. e non sto facendo una dichiarazione, perché ora ho controllato e davvero ha fatto postfix e prefisso ora hanno una differenza, ma la mia domanda sopra dà ragione di credere che le ambiguità nel linguaggio a tempo di compilazione apparentemente abbastanza e prima di balzare su qualcuno nel ramo, trattare con questi UB, non siamo in colpa qui
A proposito, vedo che l'aiuto è già stato armeggiato ))
Forse la tua mente alta non lo capisce, ripeterò di nuovo la mia domanda.
non capisci la parte evidenziata, vero?
ora al punto, perché nell'esempio che appare nella conversazione, il risultato in mql == 12 e non importa se è fatto a mano o no, quando la differenza nelle operazioni postfix e prefix, il risultato dovrebbe essere == 13
ps. e non sto facendo una dichiarazione, perché ora ho controllato e davvero fare postfix e prefisso ora hanno una differenza, ma la mia domanda sopra dà ragione di credere che le ambiguità nel linguaggio a tempo di compilazione apparentemente abbastanza e prima di balzare su qualcuno nel ramo, trattare con questi UB, non siamo in colpa qui
A proposito, l'aiuto sembra che sia stato spalato in giro).
Non essere sarcastico.
Chi dice che i risultati devono essere 13? Anche in questo caso, i risultati con effetti collaterali dipendono molto dall'ottimizzazione. Anche se non si applica l'ottimizzazione a tale espressione, entra in gioco un'implementazione - un cambiamento nel valore della variabile o immediatamente dopo averla usata o dopo aver calcolato l'espressione. Quale implementazione è corretta?
Non ci occuperemo di UB, che è indefinito, e ha scritto chiaramente: "Non fatelo.
Dove è stato copiato l'aiuto? Ho aperto il riferimento MQL5 da MetaEditor build 1755 del 18 gennaio. Dice la stessa cosa
Avvisoimportante
int i=5;
int k = i++ + ++i;
Possono verificarsi problemi di calcolo quando si sposta l'espressione di cui sopra da un ambiente di programmazione a un altro (per esempio, da Borland C++ a MQL5). In generale, l'ordine dei calcoli dipende dall'implementazione del compilatore. In pratica, ci sono due modi per implementare il post-decremento:
Attualmente il primo modo di calcolo post-decremento è implementato in MQL5. Ma anche conoscendo questa peculiarità, non si consiglia di sperimentare il suo uso.
La tua affermazione originale era che non c'è differenza tra operazioni postfix e prefix. Non c'è?
Non siate frivoli.
Chi dice che i risultati devono essere 13? Anche in questo caso, i risultati con effetti collaterali dipendono molto dall'ottimizzazione. Anche se non si applica l'ottimizzazione a tale espressione, entra in gioco un'implementazione - un cambiamento nel valore della variabile o subito dopo averla usata o dopo aver calcolato l'espressione. Quale implementazione è corretta?
Non abbiamo intenzione di occuparci di UB, per questo è indefinito, e abbiamo detto esplicitamente "non fatelo".
Dove sei andato nel riferimento? Ho aperto il riferimento MQL5 da MetaEditor build 1755 del 18 gennaio. Dice la stessa cosa
Avvisoimportante
int i=5;
int k = i++ + ++i;
Possono verificarsi problemi di calcolo quando si sposta l'espressione di cui sopra da un ambiente di programmazione a un altro (per esempio, da Borland C++ a MQL5). In generale, l'ordine dei calcoli dipende dall'implementazione del compilatore. In pratica, ci sono due modi per implementare il post-decremento:
Attualmente il primo modo di calcolo post-decremento è implementato in MQL5. Ma anche conoscendo questa peculiarità, non si raccomanda di sperimentare il suo uso.
La tua affermazione originale era che non c'è differenza tra operazioni postfix e prefix. Non è così?
Non sono sfacciato, nota dove hai iniziato il dialogo, cioè ho dovuto eseguire un codice che non conoscevo nemmeno - super
per quanto riguarda l'aiuto - sì, è stato revisionato perché quando avevo a che fare (circa due anni fa) con operazioni postfix e prefix in mql, ovviamente non ricordo questo materiale ora
Quindi, l'argomento era chiuso, e abbiamo introdotto questa differenza e l'abbiamo fatto bene, ma devi avvertirli che stai cambiando
Si prega di consigliare la chiusura parziale della posizione, tipo di conto RETAIL_HEDGING. Per esempio, chiudo metà di una posizione in Expert Advisor e un nuovo ordine con un lotto più piccolo dovrebbe aprirsi automaticamente. Quindi, a che punto il nuovo ordine è garantito nel terminale? Ho capito bene che non deve apparire immediatamente dopo il PositionClosePartial e dobbiamo prenderlo da qualche parte in OnTrade?
Che diavolo è quella cosa?
\sull'aiuto - sì, è stato pesantemente rimaneggiato, perché quando avevo a che fare (circa due anni fa) con operazioni postfix e prefix in mql, ovviamente non ricordo questo materiale ora
in generale, l'argomento era chiuso, e abbiamo introdotto questa differenza e l'abbiamo fatto bene, ma bisogna avvertirli dei cambiamenti, no?
Per amore dell'interesse ho deciso di controllare la vecchia build 1159 del giugno 2015. Il suo aiuto ha tutto quello che Slava ha citato. Quindi forse hai fatto un po' di confusione.
Che diavolo è quella cosa?
È un incidente:) Vai a servicedesk!
È un incidente:) Vai a servicedesk!
Preso - ha rotto la banca :)
Vedo - ha rotto il banco :)
Succede)
Succede)
Non so come localizzare questo errore? È solo che non voglio dare via l'intero script, e non voglio ri-confezionare tutto....