Inicio » Programación para Arduino » Operadores de comparación en Arduino

Los operadores de comparación en Arduino sirven para comparar el valor de dos operandos, por lo que se trata de operadores binarios. Siempre tendrán un operando en la parte izquierda y otro en la derecha.

Recuerda que los operandos en una expresión pueden ser variables, contantes, expresiones o llamadas a funciones.

Los operandos implicados en la comparación no tienen por qué ser del mismo tipo, se puede, por ejemplo, comparar un int y un float, puesto que la comparación se realiza con los datos.

Los tipos de datos que puedes utilizar con los operadores de comparación son: intfloatdoublebyteshortlong y char.

El resultado de evaluar los operadores de comparación siempre será un valor de tipo bool, es decir, true o false. Si la evaluación es cierta el resultado será true y, por el contrario, si la evaluación es falsa el resultado será false.

En los siguientes puntos veremos en detalle cada uno de los operadores de comparación que existen en el lenguaje de programación de Arduino.

Igualdad (==)

El primer operador de comparación que vamos a ver es el operador de igualdad (==).

Mucho cuidado con este operador. Cuando se está empezando a programar es muy común confundirlo con el operador de asignación (=) y no tienen nada que ver.

El operador de igualdad sirve para comparar dos operandos y comprobar si sus valores son iguales.

Mira este ejemplo:

int a = 5;
int b = 2;
bool resultado = a == b;

En la tercera línea estoy comparando el valor de la variable a con el valor de la variable b (a == b). El resultado de esta evaluación será un valor de tipo bool, es decir, true o false. Si el valor de ambas variables es igual, el resultado será true y si son diferentes el resultado será false.

En el ejemplo, ¿Cuál será el valor de la variable resultado tras la evaluación de la comparación? Exacto, será false puesto que la variable a vale 5 y la variable b vale 2. Los valores 5 y 2 son diferentes, así que el resultado es false.

Vamos a ver un ejemplo un poco más complejo:

int a = 5;
int b = 2;
bool resultado = (a + b) == 7;

En este ejemplo el primer operando es una operación aritmética (a + b).

El operador de igualdad está comparando el resultado de la suma (a + b) con la constante 7. En este caso el resultado es true porque 5 (a) más 2 (b) es 7.

Desigualdad (!=)

Este operador es el opuesto al anterior. Sirve para comparar dos operandos y evaluar si sus valores son diferentes. El resultado de la evaluación será un valor bool. True cuando sean diferentes y false cuando sean iguales.

Vamos a ver un ejemplo:

int a = 5;
int b = 2;
bool resultado = a != b;

El valor almacenado en la variable resultado será true, puesto que los valores de las variables a y b son diferentes (5 y 2).

¿Qué ocurre en el siguiente caso?

int a = 5;
int b = 2;
bool resultado = (a + b) != 7;

Pues que a + b si son 7, por lo que la comparación de desigualdad será false, así que la variable resultado tomará ese valor.

Menor exclusivo (<)

El operador menor exclusivo devuelve true si el operando situado en la parte izquierda del operador es menor (y solo menor) que el situado en la parte derecha.

¿Por qué digo y solo menor? Porque tiene que ser exclusivamente menor, no sirve un valor igual. Por ejemplo, si el primer operando es 3 y el segundo es 4, entonces el primero es menor exclusivo, pero si el primero es 4 y el segundo también es 4, entonces no es menor exclusivo. Cuidado con esto, que parece muy obvio, pero en la práctica no lo es tanto.

Vamos a ver un ejemplo con código:

int a = 5;
int b = 2;
bool resultado = a < b;

¿Cuál crees que es el valor de la variable resultado? Si la variable a tiene valor 5 y la variable b tiene valor 2. Evaluar 5 < 2 devuelve false, porque 5 no es menor que 2.

¿Y si la comparación fuese la siguiente?

int a = 5;
int b = 2;
bool resultado = a < (b + a);

La comparación en este caso es si a es menor que la suma de b y a, es decir: 5 < 7. El resultado en este caso es true puesto que 5 si es menor exclusivo que 7.

Menor o igual (<=)

El operador menor o igual no realiza la comparación de forma exclusiva, es decir, valores iguales también devolverán resultado true. Es la diferencia principal con el operador anterior.

Mira el siguiente código:

int a = 5;
int b = 5;
bool resultado = a <= b;

El resultado de esta comparación es true puesto que a y b tienen el mismo valor. Si la variable a tuviese valor 3, por ejemplo, también sería true, puesto que 3 es menor que 5.

El único caso en el que este operador devuelve false es cuando el primer operando tiene un valor mayor que el segundo. Por ejemplo en el siguiente código:

int a = 5;
int b = 2;
bool resultado = a <= b;

Como la variable a (5) tiene valor mayor que la variable b (2) el operador <= devuelve false.

Mayor exclusivo (>)

Es el operador opuesto al menor exclusivo (<).

Devuelve valor true cuando el operando situado a la izquierda del operador sea mayor (y solo mayor) que el operando situado a la derecha. En cualquier otro caso devuelve false.

Los valores de los operandos no pueden ser iguales, el primero debe ser si o si mayor que el segundo.

Mira el siguiente código:

int a = 5;
int b = 2;
bool resultado = a > b;

Como el valor de la variable a es 5 y es mayor que el valor de la variable b, que es 2, el resultado de la evaluación de a > b es true.

Si cambiamos el valor de b por 5 de la siguiente forma:

int a = 5;
int b = 5;
bool resultado = a > b;

El resultado es false puesto que los valores de a y b son iguales.

Mayor o igual (>=)

La diferencia de este operador con respecto al mayor exclusivo (>) es que este si contempla los valores iguales para devolver true.

Si repetimos el ejemplo anterior utilizando este operador vemos que el resultado cambia:

int a = 5;
int b = 5;
bool resultado = a >= b;

Obtenemos true tras la evaluación, puesto que los valores de las variables a y b son iguales. Cuando hacíamos la evaluación con el operador mayor exclusivo (>) el resultado era false precisamente por el mismo motivo, porque eran iguales. ¿Ves la diferencia?

El único caso en el que el operador mayor o igual (>=) devuelve false es cuando el primer operando es menor que el segundo. Por ejemplo así:

int a = 2;
int b = 5;
bool resultado = a >= b;

Como la variable a tiene valor 2, el resultado es false porque la variable b tiene valor 5. Es decir, a es menor que b. La evaluación de la expresión quedaría 2 >= 5 y no es cierta.