Discusión sobre el artículo "Aprendiendo MQL5 de principiante a profesional (Parte II): Tipos de datos básicos y uso de variables" - página 2
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
Ejem... Me da vergüenza preguntar, pero tengo que ....
En resumen, ¿por qué un neófito necesita un conocimiento tan profundo de los literales?
P.D. Yo personalmente, aunque no soy un neófito, suspendí tu prueba sin responder correctamente a una sola pregunta. Conocí algo parecido en los libros de texto - ya sea de Java o de PHP - pero fue hace tanto tiempo, y no se corresponde con el código práctico que he tenido que leer o escribir hasta ahora... No voy a ser un june en tu oficina. Y... ¿qué?
P.P.D. Creo que si escribes un artículo sobre literales, podría ser útil no sólo para mí. ;-) Sobre todo si compartes tu experiencia, que no está en la ayuda.... Sin embargo, las características no documentadas me suelen dar mucha vergüenza, porque cambian demasiado a menudo en las nuevas versiones, pero, nunca se sabe.... ¿Quizás sea realmente importante o al menos útil?
Verás. La cuestión no es la frecuencia, sino que la gente no sepa y no quiera saber las sutilezas. Y sobre meter tipos, hay que saberlo porque es la base de lo básico. Consigues mucho dolor a través de ello. Por cierto, este código no es sobre la conversión de tipos, pero para que pienses:
Por lo tanto, basado en la ayuda, todo está bien aquí. Sólo que, para mí personalmente, hay un matiz. Según afirman los desarrolladores, mql está escrito en C++, y en C++ no se puede hacer eso, es UB, pero en C todo es legal. He visto ese código en pluses a menudo, y sí que funcionaba y funciona, pero personalmente me da cierto miedo escribir así, pero si los desarrolladores de mql tienen miedo, no lo sé. Por eso nunca haré esto en mql, porque no conozco la implementación.
Según afirman los desarrolladores, mql está escrito en C++, y en C++ no se puede hacer eso, es UB, pero en C todo es legal.
Lo siento, pero los desarrolladores afirman que el lenguaje de programación MQL es lo más parecido posible a C++ y no está escrito en él. ))
Saludos, Vladimir.
Y sobre la conversión de tipos, es necesario conocerla, ya que es la base de los fundamentos.
Y ni siquiera voy a tratar de discutir sobre ello. Estoy totalmente de acuerdo. Es que... Bueno, ¡no todas las construcciones de C son igual de útiles en MQL! :-)
Respecto al código "para pensar".... Como no estoy familiarizado con C (ambos), este código me parece un juego. En la ayuda, el tipo enum se refiere a tipos enteros, y ni siquiera pensé que se trata de una estructura en absoluto. Su significado es bastante diferente... Pero gracias, ahora lo sabré - aunque personalmente no me sirve para nada, no lo usaré :-).
Entonces, según la ayuda, aquí todo es normal.
¿Puedo tener un enlace?
En cuanto al código "para pensar"... Como no estoy familiarizado con C (ambos), este código me parece un juego. En la ayuda, el tipo enum está referido a tipos enteros, y ni siquiera pensé que fuera una estructura en absoluto. Su significado es bastante diferente... Pero gracias, ahora lo sabré - aunque personalmente no me sirva de nada, no usaré tal cosa :-).
Este es el juego. Una persona debió escribir desde el techo y confundió enum y union. Su ejemplo no compila. Enum no es una estructura sino un entero de 4 bytes. Si se toma union, funciona perfectamente en C++ y MQL.
PD. En cuanto al primer ejemplo de la entrevista de Jun y la pregunta sobre la frecuencia con que sucede - por supuesto que no sucede en forma pura, porque el ejemplo es refinado, pero muy a menudo enteros con signo y sin signo se utilizan en el código mezclados, y los problemas son bastante probables aquí.Esto no tiene sentido. La persona debe haber escrito desde el techo y mezclado enum y union. Su ejemplo no se puede compilar. Enum no es una estructura sino un entero de 4 bytes. Si se toma union, funciona perfectamente en C++ y MQL.
PD. En cuanto al primer ejemplo de la entrevista de Jun y la pregunta sobre la frecuencia con que sucede - por supuesto que no sucede en su forma pura, porque el ejemplo es refinado, pero muy a menudo enteros con y sin signo se utilizan en el código mezclados, y aquí los problemas son bastante probable.Naturalmente unión)))))
Sobre el resto: https: //en.cppreference.com/w/cpp/language/union
Y sí, ya sé lo que dice a continuación
Salvo que msvs, de cuya ayuda está sacado, no afirma lo segundo, aunque nadie se lo ha encontrado todavía. g++ y clang no he mirado lo que dicen al respecto, pero apenas hay diferencias.
Si quieres usarlo así, úsalo - es tu derecho y tu dolor, si pasa algo)).
Naturalmente))))
Sobre el resto: https: //en.cppreference.com/w/cpp/language/union
cppreference es un recurso útil, pero debido a su naturaleza de referencia no puede contener todos los matices que sólo pueden encontrarse en las especificaciones del lenguaje. Para generalizarlos, es más fácil mirar en stackoverflow, y como resumen - para tipos primitivos, se garantiza la "transferencia" bit a bit de valores al leer un campo, incluso si no se ha escrito en él.
Esto no tiene sentido. La persona debe haber escrito desde el techo y mezclado enum y union. Su ejemplo no se puede compilar. Enum no es una estructura sino un entero de 4 bytes. Si se toma union, funciona perfectamente en C++ y MQL.
PD. En cuanto al primer ejemplo de la entrevista de Jun y la pregunta sobre la frecuencia con que sucede - por supuesto que no sucede en su forma pura, porque el ejemplo es refinado, pero muy a menudo enteros con y sin signo se utilizan en el código mezclados, y los problemas son bastante probable aquí.Uf, ¡se ha recuperado la imagen del mundo! :-) Estoy terminando sobre uniones y otros tipos complejos (con suerte, si no hay más meteduras de pata, debería salir la semana que viene).
P.D. El MetaEditor no resalta los literales con sufijos `u` y `ull`, sino que los compila. Al mismo tiempo, resalta `f` pero informa de un error.... Me pregunto si esto es un error o una pista. :-)
Si eres principiante y estás confundido por nuestro debate, déjame explicarte que en C (y también en C++) puedes añadir sufijos a los literales numéricos que cambian el tipo de datos. Por ejemplo, el sufijo `u` convierte un entero ordinario(int) en un entero sin signo(uint).
Intente ejecutar un script ligeramente modificado sugerido por Vladimir Simakov (preste atención a la ausencia de espacios entre números y letras, es importante):
Este script en las primeras líneas muestra los nombres de los tipos de algunos literales que se compilan en MQL5.
Puede que no haya compilado todos los sufijos que funcionan, espero que los especialistas en C me corrijan. Solo trata de entender la logica - basado en el material del articulo, la salida del script y nuestra discusion, y si todo no esta claro - haz preguntas.