[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 92

 

Entrambi sono corretti, ma il secondo è più veloce. Il primo controlla sempre tutte le condizioni, il secondo non controlla tutte le condizioni. Ed è meglio scriverlo così, per non confondere con l'affiliazione di altri:

//--- 2.
if (cond_0)
{  if (cond_1)           a=result_1;
   else if (cond_2)      a=result_2;
        else if (cond_3)  a=result_3;
}

O mettere le parentesi graffe intorno ai blocchi in una volta sola.

 
Mathemat:

Entrambi sono corretti, ma il secondo è più veloce. Il primo controlla sempre tutte le condizioni, il secondo non controlla tutte le condizioni. Ed è meglio scriverlo così per evitare confusione con l'affiliazione di altri:

O mettere le parentesi graffe intorno ai blocchi in una volta sola.

Grazie per il consiglio. Mentre prima mi sforzavo di scrivere correttamente il mio EA in generale, ora mi concentro sulla sua velocità. :)
 
Mathemat:

Entrambi sono corretti

No, i codici non sono affatto uguali.
 
Potrebbe essere più facile eseguirlo attraverso swith() se le condizioni non hanno bisogno di essere calcolate...
 
TheXpert: No, i codici non si escludono affatto.

Bene, ora speculiamo su cosa succede quando cond_1, cond_2, cond_3 non si escludono a vicenda...

Non sto discutendo, i codici danno risultati diversi in generale. Ma se le condizioni non si sovrappongono, i risultati sembrano essere gli stessi.

 
FAQ:
Potrebbe essere più facile saltare swith(), se non hai bisogno di calcolare le condizioni...
In switch il valore in case dovrebbe essere int, non sempre cond_ è int. Francamente, ero interessato alla logica stessa, quale voce è migliore/più veloce.
 
paladin80:
In switch il valore al caso dovrebbe essere int, non sempre cond_ è int. Onestamente ero interessato alla logica stessa, quale voce è migliore/più veloce.
Condizioni separate, con quelle più frequentemente usate in cima
 
paladin80:
In switch il valore al caso deve essere int, non sempre cond_ è int. Onestamente ero interessato alla logica stessa, quale voce è migliore/più veloce.

La seconda, ma c'è una restrizione sulla nidificazione.

È meglio usare il caso, se c'è questa possibilità.

 
Sì, interruttore che uso. Per quanto riguarda le condizioni che si escludono a vicenda, la mia comprensione del fenomeno è questa:
//--- 1.
int x=1, y=1;
if (x==1)
{  if (y>0)  a=result_1;
   if (y<2)  a=result_2;
   if (y==1) a=result_3;
}
// a=result_3

//--- 2.
int x=1, y=1;
if (x==1)
{  if (y>0)            a=result_1;
   else if (y<2)       a=result_2;
        else if (y==1) a=result_3;
}
// a=result_1
 

Si hanno esattamente tutte le condizioni soddisfatte quando y = 1. Non si escludono a vicenda.

Mutuamente esclusivi sono per esempio: y<0, y==0, y>0.

Motivazione: