![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
estas son sus palabras, no hay advertencias, pero realmente las hay
En qué mundo vives, qué fumas, comparte
¿Así que afirmas tan audazmente por mí sobre mi código que no ves? ¿No te equivocas de setas?
Lo tengo, no es una tontería, tienes un compilador especial sin advertencias, sobre todo personalmente de MQ
PD: Yo también quiero uno, déjame usarlo.
El código que has dado no es correcto en absoluto.
Debería ser así:
No, porque entonces hay una comparación:
No, no lo es.
Esto no tiene nada que ver.
El codificador simplemente reaccionó de forma exagerada o copió la conversión de tipo de algún lugar.
de hecho
código
no genera ningún error ni advertencia.
MQL no requiere una conversión explícita
PS. Comprueba tus suposiciones antes de empezar a discutir.
un ejemplo muy malo, te equivocas en una comparación y entonces te encuentras con un error:
PS. Comprueba tus suposiciones antes de empezar a discutir.
No, no lo harás.
No tiene nada que ver.
El codificador simplemente exageró o copió de otro lugar .
de hecho
código
no genera ningún error ni advertencia.
MQL no requiere una conversión explícita
PS. Comprueba tus suposiciones antes de empezar a discutir.
¡o_o!
Derecho - wrong....
Tengo la impresión de que no lees lo que escriben los demás.
Según las normas de programación:
LA VARIABLE DE LA FUNCIÓN ACEPTADA DEBE SER DEL MISMO TIPO QUE EL VALOR DE RETORNO DE ESTA FUNCIÓN.
¡ESO ES!
Este es el fin de esta especulación.
¿Por qué no lo escribiste así?
Porque sabes que la función siempre devuelve LONG.
Y la referencia dice claramente queel valor devuelto para el argumento POSITION_TYPE de la funciónPositionGetInteger() es
es ENUM_POSITION_TYPE, no LONG
Y si quieres practicar la fundición de tipos, escríbelo así:
El hecho de que el compilador no te dé un error no significa que lo hayas escrito correctamente.
Indica el "libre albedrío" del compilador y eso es todo. (Permite comparar LONG e INTEGER).
Esta es la manera correcta de manejar esta situación:
Un ejemplo muy malo, te has saltado la comparación, y entonces te dará un error:
¿Has visto en algún sitio lo de seguir con la conversión de tipos? No justifiques tus tesis refiriéndote a otro tema de la discusión.
Sólo se trata de comparar y sólo en este caso long es enum.
Ya entraste en la espesura de los pensamientos, aunque la pregunta fue directa, que fue respondida por entero
Nextor257:
Por favor, aconséjeme, no puedo entender qué tipo de comparación es ésta.
if(type==(long)POSITION_TYPE_BUY)
¿Por qué (long) va precedido de POSITION_TYPE_BUY ?
Se trata de un cambio de tipo de variable sobre la marcha.
long y lon en lugar deENUM_POSITION_TYPE yENUM_POSITION_TYPE
8 caracteres (que puedes escribir con los ojos cerrados) en lugar de 36 (y en mayúsculas). Además, hay todo tipo de información que no tiene sentido. Este no es un buen estilo de programación: escritura innecesaria e información redundante.
En este caso, Mikhail tiene toda la razón (Con todo mi disgusto por el estilo de programación de Mikhail).
Y no se trata de las posibles advertencias y, además, del número de caracteres, sino de la escritura estricta. La enumeración ENUM_POSITION_TYPE es un tipo de datos único. Es ENUM_POSITION_TYPE, no long ni int. Debe utilizarlo como ENUM_POSITION_TYPE y de ninguna otra manera. Y si escribes largo, la función de autocompletar comenzará en el tercer carácter, y no hay ningún problema. Y el problema está en usar long, porque puede ser casi cualquier cosa, mientras que ENUM_POSITION_TYPE no lo es.
MQL no requiere una conversión explícita
Al principio escribí que sí, pero luego vi la palabra "comparación". En realidad, no se necesita ninguna conversión explícita en comparación porque MQL lo hace implícitamente. Y más vale que no lo haga, porque el resultado suele ser indefinido. Pero en otros lenguajes normales estrictamente tipificados siempre se requiere una conversión de tipos explícita.
P.D. Por una vez, Michael dio una respuesta competente, pero la gente empezó a destrozarlo, como es habitual aquí también. Y en vano, porque en este caso tiene razón.