[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 721

 
Abzasc:

Il punto non è moltiplicare le variabili, molte condizioni e contatori.




il punto è scrivere correttamente allora, non usare abbreviazioni linguistiche:

int a;
for(a=0;a<8;a++){
//здесь что то делаем
}
for(a=0;a<8;a++){
//делаем что нибудь другое
}
 
Abzasc:

Il punto non è creare variabili, molte condizioni e contatori.

Beh, per favore, il compilatore ti permette di fare queste cose...

//+------------------------------------------------------------------+
int start()
  {
  bool flag;
  
   if(flag){
      for(int a = 0; a < 10;a++){
         Print("a = ", a);
      }
   }else{
      for(a = 10; a > 0;a--){
         Print("a = ", a);
      }
   }
  }
//+------------------------------------------------------------------+
Il flag di default è False, quindi il primo ciclo for in cui la variabile a è dichiarata non sarà eseguito, il che non impedisce che la stessa variabile "non dichiarata" sia usata nel ramo else : )
 
Abzasc:

La condizione se

qui facciamo qualcosa

altrimenti se un'altra condizione

fare qualcos'altro

Il punto non è creare variabili, molte condizioni e contatori.

Questo non richiede di reinizializzare la variabile. Fate tutto secondo quello che avete scritto e la vostra variabile a sarà usata nei posti giusti nei vostri rami logici senza reinizializzazione. Dichiaralo una volta sola e usalo a tuo beneficio e a beneficio dell'umanità... :) L'importante è non perdersi dove e per cosa lo si usa...
 
ToLik_SRGV:

quindi il primo ciclo for in cui è dichiarata la variabile a non sarà eseguito

Il ciclo deve essere sempre eseguito.
 
IgorM:


il punto di scrivere correttamente allora, piuttosto che usare abbreviazioni della lingua:

L'intero problema era la mancanza di {}, vero? Grazie!
 
artmedia70:
Questo non richiede di reinizializzare la variabile. Fate tutto secondo quello che avete scritto e la vostra variabile a sarà usata nei posti giusti nei vostri rami logici senza reinizializzazione. Dichiaralo una volta sola e usalo a tuo beneficio e a beneficio dell'umanità... :) L'importante è non perdersi dove e per cosa lo si usa...
L'ho fatto, su 715 pp, 18.07.2010 14:56, non ho messo le parentesi dopo il contatore...
 

L'"effetto" mostrato sopra dimostra che MQL-machine guarda prima attraverso il file EX4 per le variabili dichiarate, e le crea indipendentemente dai rami logici in pieno. Da un lato si scopre che non salva la RAM, e dall'altro si possono creare costruzioni simili, anche se a mio parere questo stile non è l'opzione migliore.

 
Abzasc:
L'intero problema era nella mancanza di {}, vero? Grazie mille!


L'intero problema era nella dichiarazione della variabile:

int a;

Io la dichiaro e poi la uso dove e quando serve, mentre tu avevi una dichiarazione ripetuta di una variabile - molto probabilmente il compilatore non l'ha saltata

Se hai solo una dichiarazione nel ciclo allora non hai bisogno di {}, ma se ne hai di più allora devi mettere {}, altrimenti cercherai il motivo per cui il ciclo non è calcolato correttamente

SZZY: Se avete appena iniziato, mettete le parentesi graffe dopo for, ci prenderete la mano più tardi

 
ToLik_SRGV:

Il codice di IgorM non dà alcun errore. Non credo che a sarà allocata memoria a seconda del numero di menzioni nei rami, quindi va bene.
 
Abzasc:
Il ciclo deve essere sempre eseguito.

Cosa c'entra il loop? È solo un esempio che una variabile creata in un blocco che non viene utilizzato è ancora in "gioco" e sarà visibile e utilizzabile in tutto il metodo start(), senza la necessità di reinizializzarla, tanto meno di deinizializzarla prima del riutilizzo.