Características del lenguaje mql5, sutilezas y técnicas - página 160
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
NULL es una ambigüedad tal que hay que tratarla con cuidado.
Una vez más, una cadena de entrada no puede ser NULL (forzado por ""). Las otras cuerdas pueden.
Una vez más, la cadena de entrada no puede ser NULL (forzado por ""). Las otras cuerdas pueden.
Una vez más, la cadena de entrada no puede ser NULL (forzado por ""). Las otras cuerdas pueden.
De nuevo, ¿por qué crees que no debería haber tal conversión? Mis conocimientos y experiencia no son suficientes para explicar todo esto. Así que mantén tu opinión. Espero que los desarrolladores no sigan adelante y lo cambien.
De nuevo, ¿por qué cree que no debería haber tal conversión?
Sé exactamente por qué ocurre esta conversión. Estamos hablando de una característica, no de un error.
input es casi sinónimo de const, const debe ser inicializado
NULL es la inicialización. El ejemplo muestra a propósito una cadena sin entrada.
Es una buena idea generar una advertencia en tiempo de compilación.
Sí, este comportamiento es probablemente "a prueba de tontos".
Aparentemente, debido a que una variable de entrada debe ser inicializada,= NULL se equipara artificialmente con ="" cuando la variable ya ocupa al menos un byte en la memoria.
En MQL5 las entradas:
Son absolutamente idénticos. No se asigna memoria para la variable. De todos modos, no he encontrado ninguna diferencia.
En java, por ejemplo, estos registros son ligeramente diferentes, a pesar de que tampoco se asigna memoria para la variable en ambos casos. La primera variante (String str = null;) se considerará inicializada, aunque no se asigna memoria para la variable y ésta puede imprimirse como vacía. En el segundo caso (String str;) al intentar imprimir la variable, se generará un error de variable no inicializada.
Es decir, MQL5 es más tolerante en este sentido.
Cuál es mejor, ni siquiera lo sé.
Aparentemente, debido a que una variable de entrada debe ser inicializada, el= NULL se equipara artificialmente a ="", cuando la variable ya ocupa al menos un byte en la memoria.
NULL no es una inicialización, es un valor. Puede asignar NULL a cualquier variable de cadena no-const en medio del código. Y será igual a NULL.
La entrada no es igual a NULL porque al inicio se crea un archivo de configuración invisible. A partir de este archivo se "analizan" los valores de las variables en las entradas. El análisis no puede dar como resultado NULL de todos modos y por lo tanto coloca una cadena vacía allí.
Sólo la cadena de entrada tiene este comportamiento. Para const-string y otros, está bien, por supuesto.NULL no es una inicialización, sino un valor. Puedes asignar cualquier variable de cadena no-const a NULL en medio del código. Y será igual a NULL.
La entrada no es igual a NULL porque al inicio se crea un archivo de configuración invisible. A partir de este archivo se "analizan" los valores de las variables en las entradas. El análisis sintáctico no dará como resultado NULL en absoluto y, por lo tanto, colocará una cadena vacía allí.
Bueno, eso es lo que quiero decir. Estoy de acuerdo.
Lo único es que no tiene sentido asignar un valor NULL a una cadena en la fase de declaración de la variable:
Sólo tiene sentido hacer esto para poner a cero la variable ya inicializada en memoria.
Bueno, eso es lo que estoy diciendo. Estoy de acuerdo.
Lo único es que no tiene sentido asignar un valor NULL a una cadena en la fase de declaración de la variable:
sólo tiene sentido hacer esto para anular una variable en memoria.
Aquí tiene sentido la inicialización NULL.
La inicialización NULL tiene sentido en este caso.
sí