No me funciona *= ni /= en MQL4

 

Bueno días. Estoy empezando a aprender la programación en MQL4 y me encuentro con que en una operación aritmética no me funciona la multiplicación ni la división.

Estoy intentando multiplicar o dividir un número por si mismo.

case 7: C = A; A*=A; Comment("El resultado de multiplicar ",C," por si mismo es igual a ",A);break;

        case 8: C = A; A/=A; Comment("El resultado de dividir ",C," entre si mismo es igual a ",A);break;

El mensaje de error que me dá es:

'A' - constant cannot be modified

No estoy intentando modificar la variable A.

He mirado en AYUDA del Metaeditor y la formula está bien escrita.

Hasta ahora no he encontrado dónde está el problema. 

Si alguien con más experiencia puede decirme dónde está el error.

Muchas gracias.

 
Arithmetic Operations - Operations and Expressions - Language Basics - MQL4 Reference
Arithmetic Operations - Operations and Expressions - Language Basics - MQL4 Reference
  • docs.mql4.com
Increment and decrement operations are applied only to variables, they can't be applied to constants. The prefix increment (++i) and decrement (--k) are applied to the variable right before this variable is used in an expression. Computational problems may occur while moving the above expression from one programming environment to another one...
 

Gracias por su ayuda, pero no funciona.

int A = 5;

double C = 0;

case 7: C = A; A*A; Comment("El resultado de multiplicar ",C," por si mismo es igual a ",A);break;

RESULTADO

El resultado de multiplicar 5 por si mismo es 5.   


Esto es falso , el resultado de multiplicar 5 * 5 = 25

 
NachoMau:

Veamos...

Si primero declara que C=A, luego no puede pretender que A se multiplique por A y este sea C por arte de magia.

En todo caso seria;

C=A*A;
 
NachoMau:

El comment también está mal.

Comment("El resultado de multiplicar ",A," por si mismo es igual a ",C);

Cuando adjunte código haga uso del botón 'Código'.


 

ok, ya está arreglado.

Declaro 

int A = 5

double D = 0;

case 7: D = A*A; Comment("El resultado de multiplicar ",A," por si mismo es igual a ",D);break;

y el resultado que me da es correcto, 25


El ejemplo lo saqué de un vídeo, y se veía que con "*=" funcionaba la multiplicación... supongo que sería un poco antiguo el vídeo.


Muchísimas gracias por su ayuda.

 
NachoMau:

No hay de que. Me alegro de que lo haya solucionado.

 
          case 7: D = A*A; Comment("El resultado de multiplicar ",A," por si mismo es igual a ",D);break;
Aprendí una cosa más. Muchas gracias.
 

Si lo que querias es usar *= y /= no ibas mal encaminado, el caso esque habias declarado la variable 'A' como constante.

Los operadores *= y /= modifican la variable a la que asignan valor.

Para que no te de ese error que te daba deberias hacerlo así.

int A = 5; 
int C = A; 
A *= A; 
Comment("El resultado de multiplicar ",C," por si mismo es igual a ",A);

float B = 5; 
float D = B; 
B /= B; 
Comment("El resultado de dividir ",D," por si mismo es igual a ",B);

Animo.

 

Si, al final es lo he hecho.

Declarar otra variable y darle el valor de A

Muchas gracias.

Razón de la queja: