Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 427
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
Y leer cuántas veces se inicializa una variable estática. Y la propia pregunta desaparecerá por lo absurda que es ;)
Entonces cómo entender esto: Las variables locales declaradas con la palabra clave static conservan sus valores durante el tiempo de vida de la función. Cada vez que se llama de nuevo a la función, estas variables locales contienen los valores que tenían en la llamada anterior. ¿Una variable declarada en una función definida por el usuario no es una variable local?
Sobre la segunda pregunta,
si la primera garrapata no atrapa, la segunda lo hará.
Entonces, cómo entender esto: Las variables locales declaradas con la palabra clave static conservan sus valores durante el tiempo de vida de la función. Cada vez que se llama de nuevo a la función, estas variables locales contienen los valores que tenían en la llamada anterior. ¿Una variable declarada en una función definida por el usuario no es una variable local?
Devuelve la hora de apertura del bar. Será lo mismo en todo el bar.
Lo tengo aquí. Gracias.
El modificador static lo hace estático y ya se almacena en la memoria de las variables estáticas, no de las locales.
Aquí es donde no lo entiendo. En mi opinión, no importa dónde se almacene, por código ponemos a cero el valor de la variable cada vez que se accede a la función. ¿Para qué?
Aquí es donde no lo entiendo. En mi opinión, no importa dónde se almacene, por código ponemos a cero el valor de la variable cada vez que se accede a la función. ¿Para qué?
Para el primer lanzamiento - en la declaración. Además, tú mismo controlas su contenido.
Sin embargo, en mi opinión, esto no es cierto: el código se lee línea por línea cada vez y cada vez que llega a cero, y en la primera ejecución, aunque no haya inicialización, la variable tomaría un valor nulo. Por lo tanto, la línea estática datetime New_Time=0; obliga al programa a hacer un trabajo innecesario.
Sin embargo, en mi opinión, no es así: el código se lee línea por línea cada vez y cada vez que llega a cero, y en la primera ejecución aunque no haya inicialización, la variable tomaría un valor cero. Por lo tanto, la cadena estática datetime New_Time=0; obliga al programa a hacer un trabajo innecesario.
Tú dices que no, tú dices que sí...
No se ofenda. Pero los programadores, obviamente, leen el texto de forma diferente. Siempre he pensado que si en un programa dice "igualar a cero", el ordenador debe igualar a cero independientemente de que sea en el lanzamiento o en la referencia recurrente a una línea de código. Y no hace falta visitar ningún diario para demostrar que la inicialización cero es innecesaria, basta con eliminarla: static datetime New_Time; produce absolutamente los mismos resultados que static datetime New_Time=0; no sé cuánto más rápido es el funcionamiento del programa, admito que no es nada significativo, pero aun así elimina el "gesto innecesario".