Bug del compilatore con il parametro template = void* - pagina 9

 
A100:

L'avviso è stato emesso solo perché le priorità sono diverse in MQL5. Non perché ...

Quindi, gli sviluppatori hanno risolto i loro precedenti bug... non più di questo

Anchequi c'è qualcosa di sbagliato nelle priorità?

 
fxsaber:

Anchequi c'è qualcosa di sbagliato nelle priorità?

Sono diversi in MQL5 e nel vecchio MQL4... Pensavo che l ' avessi già letto
 
A100:
Sono diversi in MQL5 e nel vecchio MQL4... Pensavo che l ' avessi già letto

Una lista di differenze, per favore.

 
fxsaber:

Una lista di differenze, per favore.

Non si può fare da soli? Cliccare sui link qui sopra?

MQL5 e nuovo MQL4

Operazione

Descrizione

Ordine di esecuzione

&&

Operazione logica AND

Da sinistra a destra

||

Operazione logica OR

Da sinistra a destra


Vecchio MQL4

||

Operazione logica OR

Da sinistra a destra

&&

Operazione logica AND

Da sinistra a destra

Più alta è la priorità di un gruppo di operazioni, più alto è il suo posto nella tabella.

Il tuo esempio:

bool a = r && g || b;
 
Ilya Malev:
Sarebbe più comodo se il compilatore offrisse di disporre automaticamente le parentesi "correttamente", come fa Excel quando si scrive una formula incompleta.

In generale, ci sono linguaggi di programmazione speciali per gli amanti delle parentesi - LISP. Ecco un estratto da un motore di ricerca: "Questo stile è un po' come il linguaggio LISP. Ma in LISP, il gran numero di parentesi è dovuto alla mancanza di priorità delle operazioni".

 
A100:

In generale, per i fan delle parentesi ci sono linguaggi di programmazione speciali - Simula, LISP. Ecco un estratto da un motore di ricerca: "Questo stile è un po' come il linguaggio LISP. Ma in LISP, il gran numero di parentesi è causato dalla mancanza di priorità delle operazioni".

È bene che il compilatore avverta di qualcosa che gli sviluppatori cambiano improvvisamente nella logica passata. Se gli stessi avvertimenti fossero stati dati sulle chiamate di funzioni come ArrayMaximum dopo la migrazione del codice da mql4, avrei risparmiato un sacco di tempo e di nervi ai miei tempi (hanno scambiato liberamente parametri di un tipo, se non ne siete a conoscenza).

 
Ilya Malev:

È bene che il compilatore vi avverta di qualcosa che gli sviluppatori cambiano improvvisamente nella logica passata.

Non mi dispiace. Lasciate che questi avvertimenti rimangano nel vecchio MQL4.

 
Per quanto riguarda "i programmatori normali ricordano le priorità delle operazioni C++ come la tabella di moltiplicazione", io personalmente l'ho più o meno ricordata solo dopo aver iniziato a sovraccaricare gli operatori, e prima non l'ho mai aperta. Non tutti i codificatori di mql sono professionisti, e gli sviluppatori del terminale e del linguaggio per i commercianti devono tenerne conto non da ultimo.
 
Ilya Malev:

Se gli stessi avvertimenti fossero stati emessi su chiamate di funzioni come ArrayMaximum dopo aver trasferito il codice da mql4, avrei risparmiato un sacco di tempo e di nervi ai miei tempi (hanno scambiato liberamente gli stessi parametri, se non lo sapete)

Beh, non vengono distribuiti. Questo è ciò che rende la codifica selettiva così brutta - crea un'illusione che il compilatore si prenderà cura di tutto (quindi o tutto o niente).

 
Ilya Malev:
Non tutti i codificatori di mql sono professionisti, e gli sviluppatori del terminale e del linguaggio per i commercianti devono tenerne conto non da ultimo.

Esattamente! Mai un professionista, tali avvertimenti mi hanno aiutato 100 volte.