Errores, fallos, preguntas - página 161

 
alexvd:

¿Cuál fue la acción anterior?

¿Ayuda la actualización?

Abrí el terminal después de unos días sin usarlo. Tengo esta foto. Luego usé el script para cargar el historial. No hay cambios. Esperé un par de horas. Todo está bien ahora.

 
¿Pueden decirme dónde puedo encontrar quién tiene la MT5 funcionando en una cuenta real?
 
void OnStart()
  {
//---
   int x,y = 0;
   Print("x++:");
   x = x++;
   Print("x=",x," y=",y);
   y = x++;
   Print("x=",x," y=",y);
  }

¿Puedes explicar por qué según los resultados de la ejecución x==0 e y==1 ? Construir 342

PS. Debería leer... x==1 e y==0 ...

 
Ashes:

¿Puedes explicar por qué según los resultados de la ejecución x==0 e y==1 ? Construir 342

Consulte aquí https://www.mql5.com/ru/docs/basis/operations/mathoperation

¿El compilador no muestra ningún error o advertencia?

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 
Ashes:

¿Puedes explicar por qué según los resultados de la ejecución x==0 e y==1 ? Construir 342

Lo comprobamos, el resultado es x=1, y=0

el primer incremento x=x++ se descompone en

t=x;  // x=0
x++;  // x=1
x=t;  // x=0

 
Ashes:

¿Puedes explicar por qué según los resultados de la ejecución x==0 e y==1 ? Construir 342

Sí, podemos. Se trata de la implementación de x = x++;

Antes del postincremento, el valor de x se guarda en una variable temporal. A continuación, se realiza un incremento. Luego se hace una asignación desde la variable temporal.

 
Lizar:

Mira aquí https://www.mql5.com/ru/docs/basis/operations/mathoperation

¿El compilador no muestra ningún error o advertencia?

El compilador de MT5 se lo traga en silencio. No compila en MT4.

Por curiosidad, he probado una construcción similar en C++ (desde Visual Studio 2005) y el resultado para x e y es el mismo.

 
Ashes:

¿Puedes explicar por qué según los resultados de la ejecución x==0 e y==1 ? Construir 342

Es necesario inicializar las variables antes de realizar operaciones con ellas. Si lo asignas a una variable no inicializada, todo irá bien.

Sin embargo, siempre es una buena idea inicializar las variables para evitar problemas.

void OnStart()
  {
//---
   int x=0,y = 0;
   Print("x++:");
   x++;
   Print("x=",x," y=",y);
   y=x;
   Print("x=",x," y=",y);
  }
 
Ashes:

¡El compilador de MT5 traga en silencio! En MT4 la compilación falla.

Por curiosidad he probado una construcción similar en C++ (desde Visual Studio 2005) - el resultado para x e y es el mismo.

Este lugar no está definido en el estándar c++ y se indica explícitamente que depende de la implementación. Hay dos implementaciones principales:

1. Realiza un postincremento inmediatamente después de utilizar una variable en una expresión. (como hemos hecho nosotros).

2. Postincremento después de calcular toda la expresión.

 

Quiero decir, ¿dónde puedo encontrar qué corredores corren MT5 en tiempo real?