Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 160
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
Il NULLA è una tale ambiguità che bisogna trattarla con attenzione.
Ancora una volta, una stringa in ingresso non può essere NULL (forzata da ""). Le altre corde possono.
Ancora una volta, la stringa in ingresso non può essere NULL (forzata da ""). Le altre corde possono.
Ancora una volta, la stringa in ingresso non può essere NULL (forzata da ""). Le altre corde possono.
Di nuovo, perché pensa che non ci dovrebbe essere una tale conversione? Le mie conoscenze ed esperienze non sono sufficienti per spiegare tutto questo. Quindi si attenga alla sua opinione. Spero che gli sviluppatori non vadano avanti e lo cambino.
Di nuovo, perché pensa che non ci debba essere questa conversione?
So esattamente perché avviene questa conversione. Stiamo parlando di una caratteristica qui, non di un bug.
input è quasi sinonimo di const, const deve essere inizializzato
NULL è l'inizializzazione. L'esempio mostra volutamente una stringa non in ingresso.
È una buona idea generare un avvertimento al momento della compilazione.
Sì, questo comportamento è probabilmente solo "infallibile".
Apparentemente, poiché una variabile di ingresso deve essere inizializzata,= NULL è artificialmente equiparato a ="" quando la variabile occupa già almeno un byte in memoria.
In MQL5 le voci:
Sono assolutamente identici. Nessuna memoria è allocata per la variabile. Comunque, non ho trovato alcuna differenza.
In java, per esempio, tali record sono leggermente diversi, nonostante il fatto che anche in entrambi i casi non venga allocata memoria per la variabile. La prima variante (String str = null;) sarà considerata inizializzata, anche se non viene allocata memoria per la variabile e la variabile può essere stampata come vuota. Nel secondo caso (String str;) quando si cerca di stampare la variabile, verrà generato un errore di variabile non inizializzata.
Cioè MQL5 è più tollerante in questo senso.
Quale sia meglio, non lo so nemmeno io.
Apparentemente, poiché una variabile di ingresso deve essere inizializzata, il= NULL è artificialmente equiparato a ="", quando la variabile occupa già almeno un byte in memoria.
NULL non è un'inizializzazione, è un valore. Si può assegnare NULL a qualsiasi variabile stringa non-const nel mezzo del codice. E sarà uguale a NULL.
Input non è uguale a NULL perché all'avvio viene creato un set-file invisibile. Da questo file i valori delle variabili vengono "analizzati" in input. Il parsing non può comunque emettere NULL e quindi ci mette una stringa vuota.
Solo input-string ha questo comportamento. Per const-string e altri, va bene, naturalmente.NULL non è un'inizializzazione, ma un valore. Potete assegnare qualsiasi variabile stringa non-const a NULL nel mezzo del codice. E sarà uguale a NULL.
Input non è uguale a NULL perché all'avvio viene creato un set-file invisibile. Da questo file i valori delle variabili vengono "analizzati" in input. Il parsing non darà in output NULL e quindi vi metterà una stringa vuota.
Beh, questo è quello che voglio dire. Sono d'accordo.
L'unica cosa è che non ha senso assegnare un valore NULL a una stringa al momento della dichiarazione della variabile:
Ha senso farlo solo per azzerare la variabile già inizializzata in memoria.
Beh, è quello che sto dicendo. Sono d'accordo.
L'unica cosa è che non ha senso assegnare un valore NULL a una stringa al momento della dichiarazione della variabile:
ha senso farlo solo per annullare una variabile in memoria.
Qui l'inizializzazione NULL ha senso.
L'inizializzazione NULL ha senso qui.
sì