Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 20

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
¿cierto? Por favor.

No, quería decir:

for( int i = 0; i < x; i++ )
{
}
for( int i = 0; i < x; i++ )
{
}
...

Sí, y el diseño que escribiste no funcionará en absoluto.

 
Artyom Trishkin:
Cada variable tiene su propio alcance. Incluso dentro de las llaves, hay un ámbito separado para la variable declarada en ese ámbito - dentro de las llaves. Entonces, ¿por qué debería, por ejemplo, crear variables de índice de bucle con nombres diferentes en distintos lugares de un programa, si sé que no se solapan, y es suficiente, y habitual, utilizar un nombre de variable como "i"?

No he discutido contigo.

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
¿cierto? De nada.
Tú mismo te das cuenta de que te has inventado deliberadamente un mal ejemplo que ningún programador en su sano juicio se inventaría.
 
Alexey Kozitsyn:

No, quería decir:

for( int i = 0; i < x; i++ )
{
}
for( int i = 0; i < x; i++ )
{
}
...


¿cuál es el objetivo? Por favor, comparte tu experiencia: ¿cuál podría ser el problema en este caso, es decir, si tu código fuera así?

int i;
for( i = 0; i < x; i++ )
{
}
for( i = 0; i < x; i++ )
{
}
...
 
Renat Akhtyamov:

No estaba discutiendo contigo.

Este es mi hilo. Y cuando doy un mal consejo, que no es óptimo, tengo derecho a corregir a la persona. Usted, en lo que respecta a la situación que nos ocupa, está dando un mal consejo.
 
Artyom Trishkin:
Este es mi hilo. Y cuando se da un mal consejo subóptimo, tengo derecho a corregir a la persona. Usted, con respecto a la situación en cuestión, está dando un mal consejo.

Tu hilo, luego léelo detenidamente y relaciona el post con el nick que estás respondiendo.

En resumen, estás en el lugar equivocado.

 
Renat Akhtyamov:

¿pero qué sentido tiene? Por favor, comparta su experiencia - ¿cuál podría ser el problema en este caso, es decir, si su código sería así?

int i;
for( i = 0; i < x; i++ )
{
}
for( i = 0; i < x; i++ )
{
}
...

Cuando se inicializa un contador fuera de un bucle, su alcance se extiende más allá del bucle, lo que normalmente no es necesario. De este modo, se proporciona un terreno fértil para posibles errores, por ejemplo, si más adelante en el código tendrá una variable j, y accidentalmente la llama i. O en lugar del índice [1] se escribe [i], etc.

Por ello, las variables deben inicializarse lo más cerca posible del lugar donde se utilizan por primera vez y evitar un gran número de variables globales. Esto reduce la lista de posibles errores.

 
Alexey Kozitsyn:

Cuando se inicializa un contador fuera de un bucle, su alcance se extiende más allá del bucle, lo que normalmente no es necesario. Al hacer esto, proporcionas un terreno fértil para posibles errores, por ejemplo, si más adelante en el código tienes una variable j y accidentalmente la llamas i. O en lugar del índice [1] se escribe [i], etc.

Por lo tanto, las variables deben inicializarse lo más cerca posible del lugar donde se utilizan por primera vez e intentar evitar un gran número de variables globales. Esto reduce la lista de posibles errores.

¿Qué tiene que ver esto con(....)?

Estoy indignado.

Si dice i=0 e i++?

Bueno, ¿cambiar i en otro bucle?

No funcionará

 
Renat Akhtyamov:

¿Qué tiene eso que ver?

Estoy fuera.

Puedes estar en cualquier sitio y en cualquier cosa, estás en tu derecho. Me pediste que te lo explicara y lo hice.
 
Alexey Kozitsyn:
Puedes estar en cualquier sitio y en cualquier cosa, estás en tu derecho. Me pediste que te lo explicara y lo hice.

Lo único que hay que tener en cuenta aquí es que después del bloque del bucle i ya es igual a x, siempre que en el bucle i<x

Array[i] después de for(...){} devolverá el error de desbordamiento del array y ya está

Razón de la queja: