[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 721
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
No se trata de multiplicar variables, muchas condiciones y contadores.
la cuestión es escribir correctamente entonces, no usar abreviaturas del lenguaje:
No se trata de crear variables, muchas condiciones y contadores.
Bueno, por favor, el compilador permite hacer esas cosas...
La bandera por defecto es False, por lo que el primer bucle for en el que se declare la variable a no se ejecutará, lo que no impide que la misma variable "no declarada" se utilice en la rama else : )La condición si
aquí hacemos algo
de lo contrario, si otra condición
hacer otra cosa
No se trata de crear variables, muchas condiciones y contadores.
por lo que el primer bucle for en el que se declare la variable a no se ejecutará
el punto de escribir correctamente entonces, en lugar de utilizar abreviaturas del lenguaje:
Esto no requiere que se reinicie la variable. Haz todo de acuerdo con lo que has escrito y tu variable a se utilizará en los lugares adecuados de tus ramas lógicas sin necesidad de reiniciarlas. Decláralo una vez y utilízalo en tu beneficio y en el de la humanidad... :) Lo principal es no perderse dónde y para qué se usa...
El "efecto" que se muestra arriba demuestra que MQL-máquina primero busca en el archivo EX4 las variables declaradas, y las crea independientemente de las ramas lógicas en su totalidad. Por un lado resulta que no se ahorra RAM, y por otro lado se pueden crear construcciones similares, aunque en mi opinión este estilo no es la mejor opción.
Todo el problema estaba en la falta de {}, ¿no? ¡Muchas gracias!
Todo el problema estaba en la declaración de la variable:
int a;
Yo la declaro y luego la uso donde y cuando sea necesario, mientras que tú tenías una declaración repetida de una variable - lo más probable es que el compilador no se la haya saltado
Si sólo tienes una sentencia en el bucle entonces no necesitas {}, pero si tienes más entonces tienes que poner {}, de lo contrario buscarás por qué el bucle no se calcula correctamente
SZZY: Si acabas de empezar, pon paréntesis después de "for", ya lo entenderás después
El bucle debe ejecutarse siempre.
¿Qué tiene que ver el bucle con esto? Es sólo un ejemplo de que una variable creada en un bloque que no se utiliza sigue en "juego" y será visible y utilizable durante todo el método start(), sin necesidad de reinicializarla, y mucho menos de desinicializarla antes de reutilizarla.