Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Ynfiniti en Octubre 07, 2015, 04:05:45 PM

Título: Operador ">"
Publicado por: Ynfiniti en Octubre 07, 2015, 04:05:45 PM
Sé que el operador ">" significa "Mayor que...", pero encontré este código y no entiendo como funciona ahí:

Variable += (Variable > 0);

¿Alguien podría explicarme lo que hace en esa línea de código, o cómo funciona?  :-[
Título: Re:Operador ">"
Publicado por: Marth en Octubre 07, 2015, 04:08:20 PM
Las condicionales devuelven true o false según si son verdad o no.
En nuestro caso, si variable>0, el resultado del condicional es true, y sera como variable+=1.
Pero si la condición es false, sera variable+=0.
Título: Re:Operador ">"
Publicado por: Ynfiniti en Octubre 07, 2015, 04:11:29 PM
Cita de: Marth en Octubre 07, 2015, 04:08:20 PM
Las condicionales devuelven true o false según si son verdad o no.
En nuestro caso, si variable>0, el resultado del condicional es true, y sera como variable+=1.
Pero si la condición es false, sera variable+=0.

¿O sea que en esa línea comprueba variable>0 sin un if?
Título: Re:Operador ">"
Publicado por: fasst007 en Octubre 07, 2015, 04:56:32 PM
Cita de: Ynfiniti en Octubre 07, 2015, 04:11:29 PM
¿O sea que en esa línea comprueba variable>0 sin un if?

En el if, se evalúa la veracidad de una expresión, y posteriormente ejecuta un código según el resultado de esa evaluación.
Aquí se evalúa la veracidad de una expresión, y posteriormente se asigna el resultado en una variable. Esa es la diferencia.

Como el verdadero o falso no es más que un número que lo representa, aquí valiéndose de ello se hace una operación matemática de suma porque esa linea de código es igual a variable = variable + (variable>0);

En fin esta línea de código incrementa "variable" si su valor es mayor a cero, caso contrario no lo incrementa. Si es cero va a quedar en cero siempre y si es mayor que cero se va a ir incrementando en una unidad (con los valores negativos pasa igual que con el cero, no se incrementa)
Título: Re:Operador ">"
Publicado por: penumbra en Octubre 07, 2015, 08:19:17 PM
Cita de: Ynfiniti en Octubre 07, 2015, 04:11:29 PM
¿O sea que en esa línea comprueba variable>0 sin un if?
Esto es posible por las peculiaridades del lenguaje GML, que realmente no soporta valores booleanos como otros lenguajes "más serios". En otros lenguajes, el resultado de una expresión lógica es o false o true y se acabó. En GML esto no ocurre asi, sino que cualquier real mayor a 0.5 se toma como true (uno) y cualquier número menor a 0.5 se toma como false (cero)

La parte a la derecha del signo +, al ser una expresión lógica en GML, va a devolver o un 1 o un 0, que para GML es tanto "booleano" como un real, y por eso se puede sumar al final.