Per favore ditemi, dopo la pausa nell'operatore for (i; i>0; i--) viene eseguita l'espressione "i--" o solo "espressione 3" (secondo la documentazione)? Non l'ho trovato nel libro di testo.
Non capisco perché "-1" viene lanciato di volta in volta se dopo la pausa il Print(i); prima della pausa c'è i-- e if (i==0), che è il comando di uscita se i ha già raggiunto lo 0 all'interno dell'operatore. Poiché i è usato anche più in basso nel codice, in Close[i], produce l'errore "out of range
Ivan Butko operatore for (i; i>0; i--) viene eseguita l'espressione "i--" o solo "espressione 3" (secondo la documentazione)? Non l'ho trovato nel libro di testo.
Non capisco perché "-1" viene lanciato di volta in volta se dopo la pausa il Print(i); prima della pausa c'è i-- e if (i==0), che è il comando di uscita se i ha già raggiunto lo 0 all'interno dell'operatore. Poiché i è usato anche più in basso nel codice, in Close[i], produce l'errore "out of range
Ivan Butko operatore for (i; i>0; i--) viene eseguita l'espressione "i--" o solo "espressione 3" (secondo la documentazione)? Non l'ho trovato nel libro di testo.
Non capisco perché "-1" viene lanciato di volta in volta se dopo la pausa il Print(i); prima della pausa c'è i-- e if (i==0), che è il comando di uscita se i ha già raggiunto lo 0 all'interno dell'operatore. Poiché i è usato anche più in basso nel codice, in Close[i], produce l'errore "out of range
Dopo la pausa, esce dal ciclo all'operatore successivo al ciclo, dopo che il ciclo itera fino alla fine dell'iterazione in quel punto e ne inizia una nuova.
Non chiedetemi che tipo di stronzate scrivo nel mio codice. Voglio solo capire le sfumature di questo operatore) Sembra che nel corpo ho specificato "è ora di lasciare qui, perché i=0", ma l'operatore prende e ancora una volta esegue l'espressione, anche se dovrebbe passare il controllo all'operatore successivo
Non chiedetemi che tipo di sciocchezze sto scrivendo. Voglio solo capire le sfumature di questo operatore) È come se nel corpo avessi specificato "è il momento di lasciare qui, perché i=0", ma l'operatore prende e ancora una volta esegue l'espressione, anche se dovrebbe passare il controllo all'operatore successivo
Sì, l'hai fatto, ma l'hai tolto prima di questo controllo. Scrivilo in questo modo
i=10;
for (i; i>0; i--)
{
if (i==0) break;
i--;
}
Print(i);
Print(Close[i]);
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Naturalmente, il programma non sta aspettando che il terminale in un thread separato registri alcuni dati.
Grazie, voglio dire
Non capisco perché "-1" viene lanciato di volta in volta se dopo la pausa il Print(i); prima della pausa c'è i-- e if (i==0), che è il comando di uscita se i ha già raggiunto lo 0 all'interno dell'operatore. Poiché i è usato anche più in basso nel codice, in Close[i], produce l'errore "out of range
Non capisco perché "-1" viene lanciato di volta in volta se dopo la pausa il Print(i); prima della pausa c'è i-- e if (i==0), che è il comando di uscita se i ha già raggiunto lo 0 all'interno dell'operatore. Poiché i è usato anche più in basso nel codice, in Close[i], produce l'errore "out of range
Non capisco perché "-1" viene lanciato di volta in volta se dopo la pausa il Print(i); prima della pausa c'è i-- e if (i==0), che è il comando di uscita se i ha già raggiunto lo 0 all'interno dell'operatore. Poiché i è usato anche più in basso nel codice, in Close[i], produce l'errore "out of range
Dopo la pausa, esce dal ciclo all'operatore successivo al ciclo, dopo che il ciclo itera fino alla fine dell'iterazione in quel punto e ne inizia una nuova.
{
i--;
if (i==0) break;
}
Print(i);
Print(Close[i]);
// Nel log dice (-1), come mai... e, quindi, l'errorearray out of range, perché Close[-1] non avviene.
Voglio dire, ho ragione nel capire che dopo la pausa nell'intestazione(i; i>0; i--) la terza espressione "i--" viene ancora eseguita?
{
i--;
if (i==0) break;
}
Print(i);
Print(Close[i]);
// Il log dice (-1), come mai... e, quindi, l'errorearray out of range, perché Close[-1] non avviene.
Voglio dire, ho ragione nel capire che dopo la pausa nell'intestazione(i; i>0; i--) la terza espressione "i--" viene eseguita comunque?
Correttamente scrive
Si toglie non solo nell'intestazione, ma anche nel corpo del ciclo.Scrive correttamente.
Non chiedetemi che tipo di stronzate scrivo nel mio codice. Voglio solo capire le sfumature di questo operatore) Sembra che nel corpo ho specificato "è ora di lasciare qui, perché i=0", ma l'operatore prende e ancora una volta esegue l'espressione, anche se dovrebbe passare il controllo all'operatore successivo
Non chiedetemi che tipo di sciocchezze sto scrivendo. Voglio solo capire le sfumature di questo operatore) È come se nel corpo avessi specificato "è il momento di lasciare qui, perché i=0", ma l'operatore prende e ancora una volta esegue l'espressione, anche se dovrebbe passare il controllo all'operatore successivo
Sì, l'hai fatto, ma l'hai tolto prima di questo controllo. Scrivilo in questo modo
ci sarà un risultato diverso
Sì, l'hai fatto, ma l'hai tolto prima di questo controllo. Scrivilo così
aah... capito. Capito.
Grazie a tutti per le vostre pronte risposte.
ahh... Capito. Capito.
Grazie a tutti per le vostre pronte risposte.
Il tuo codice stampa 0, non -1...
Probabilmente -1 stampato da qualche altra parte, molto probabilmente l'intero codice è nelle stampanti...
Prima di cercare di risolvere il problema, è necessario identificarlo... Assicurati che ci sia e localizzalo prima di risolverlo...