Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 427
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 leggere quante volte viene inizializzata una variabile statica. E la domanda stessa scomparirà per la sua assurdità ;)
Allora come capire questo: le variabili locali dichiarate con la parola chiave static mantengono i loro valori per tutta la durata della funzione. Ogni volta che la funzione viene richiamata, queste variabili locali contengono i valori che avevano nella chiamata precedente. Una variabile dichiarata in una funzione definita dall'utente non è locale?
Sulla seconda domanda,
se la prima zecca non prende, la seconda lo farà.
Allora come capire questo: le variabili locali dichiarate con la parola chiave static mantengono i loro valori per tutta la durata della funzione. Ogni volta che la funzione viene richiamata, queste variabili locali contengono i valori che avevano nella chiamata precedente. Una variabile dichiarata in una funzione definita dall'utente non è una variabile locale?
Restituisce l'orario di apertura del bar. Sarà lo stesso in tutto il bar.
Ce l'ho proprio qui. Grazie.
Il modificatore statico lo rende statico ed è già memorizzato in memoria per le variabili statiche, non per le variabili locali.
È qui che non capisco. Secondo me, non importa dove è memorizzata, con il codice si azzera il valore della variabile ogni volta che si accede alla funzione. Per quale motivo?
È qui che non capisco. Secondo me, non importa dove è memorizzata, con il codice si azzera il valore della variabile ogni volta che si accede alla funzione. Per quale motivo?
Per il primo lancio - a dichiarazione. Inoltre, tu stesso controlli il suo contenuto.
Tuttavia, secondo me, non è questo il caso: il codice viene letto riga per riga ogni volta e ogni volta tocca lo zero, e alla prima esecuzione anche se non c'è inizializzazione, la variabile prenderebbe un valore zero. Quindi, la stringa statica datetime New_Time=0; costringe il programma a fare un lavoro inutile.
Tuttavia, a mio parere, questo non è vero: il codice viene letto riga per riga ogni volta e ogni volta tocca lo zero, e alla prima esecuzione, anche se non c'è inizializzazione, la variabile prenderebbe un valore nullo. Quindi, la stringa statica datetime New_Time=0; costringe il programma a fare un lavoro inutile.
Tu dici no, tu dici sì...
Non si offenda. Ma i programmatori ovviamente leggono il testo in modo diverso. Ho sempre considerato che se c'è scritto "equiparare a zero" nel programma, il computer deve equipararlo a zero indipendentemente dal fatto che sia al lancio o al riferimento ricorrente a una linea di codice. E non c'è bisogno di visitare alcun giornale per dimostrare che l'inizializzazione zero non è necessaria, si può semplicemente rimuoverla: static datetime New_Time; produce assolutamente gli stessi risultati di static datetime New_Time=0; Non so quanto sia più veloce il funzionamento del programma, ammetto che non è affatto significativo, ma comunque rimuove il "gesto non necessario".