Category:Amazing Hopper: Difference between revisions

Content added Content deleted
No edit summary
Line 5,178: Line 5,178:


/* sobrecarga de instrucciones aritmeticas naturales: MINUS */
/* sobrecarga de instrucciones aritmeticas naturales: MINUS */
#defn minus(_X_) #IF minus(#ATOMF) #ELSE #CMPLX;postfix;sub;postfix #EIF
#defn MINUS(_X_) #IF minus(#ATOMF) #ELSE #CMPLX;postfix;sub;postfix #EIF


MINUS es más rápido que SUB, pero solo admite una constante o una variable. La macro, sobrecarga al operador real, dándole la posibilidad de elegir el tipo de operación, según la naturaleza del argumento.
MINUS es más rápido que SUB, pero solo admite una constante o una variable. La macro no puede sobrecargar al operador real, por lo que se hace necesario escribirla, en este caso, con mayúscula.


{5}minus(x) ==> expande a: {5}minus(x)
{5}minus(x) ==> expande a: {5}minus(x)
{5}minus({x}mul by'10') ==> expande a: {5}{x}mul by'10';postfix;sub;postfix
{5}MINUS({x}mul by'10') ==> expande a: {5}{x}mul by'10';postfix;sub;postfix


Recordar que POSTFIX activa/desactiva el cálculo en notación polaca. Para el ejemplo, calculará 5 - x*10; sin POSTFIX, HOPPER calcularía x*10-5, y no cumpliría con el sentido de la operación MINUS.
Recordar que POSTFIX activa/desactiva el cálculo en notación polaca. Para el ejemplo, calculará 5 - x*10; sin POSTFIX, HOPPER calcularía x*10-5, y no cumpliría con el sentido de la operación MINUS.



=== #LOOP / #ENDLOOP, %LOOP / %ENDLOOP ===
=== #LOOP / #ENDLOOP, %LOOP / %ENDLOOP ===