Los operadores relacionales, también denominados operadores binarios lógicos y de comparación, se utilizan para comprobar la veracidad o falsedad de determinadas propuestas de relación (en realidad se trata respuestas a preguntas).
Las expresiones que los contienen se denominan expresiones relacionales. Aceptan diversos tipos de argumentos, y el resultado, que es la respuesta a la pregunta, es siempre del tipo cierto/falso, es decir, producen un resultado booleano.
Si la propuesta es cierta, el resultado es true (un valor distinto de cero), si es falsa false (cero). C++ dispone de los siguientes:
< Menor que> Mayor que<= Menor o igual que>= Mayor o igual que== Igual que (identidad)!= Desigual que (desigualdad)
Sintaxis
expresión-relacional < shift-expresion
expresión-relacional > shift-expresion
expresión-relacional <= shift-expresion
expresión-relacional >= shift-expresion
expresión-de-igualdad == expresión-relacional
expresión-de-igualdad != expresión-relacional
Comentario
Como puede verse, todos ellos son operadores binarios (utilizan dos operandos), de los cuales, dos de ellos son de igualdad: == y !=, y sirven para verificar la igualdad o desigualdad entre valores aritméticos o punteros. Estos dos operadores pueden comparar ciertos tipos de punteros, mientras que el resto de los operadores relacionales no pueden utilizarse con ellos.
Observe que los operadores == y != tienen una menor precedencia que el resto de los operadores relacionales < y >, <= y >=.
El operador de desigualdad != tiene otra forma estándar de designación mediante la palabra clave not_eq.
Cualquiera que sea el tipo de los operandos, por definición, un operador relacional, produce un bool (true o false) como resultado, aunque en determinadas circunstancias puede producirse una conversión automática de tipo a valores int (1 si la expresión es cierta y 0 si es falsa).
Ejemplo de comprobación:
#include <iostream.h>
int main() {
float f = 12.1, g = 12.2;
cout << "Tipo: " << typeid(f < g).name() << endl;}
int main() {
float f = 12.1, g = 12.2;
cout << "Tipo: " << typeid(f < g).name() << endl;}
Salida
Tipo: bool
Condiciones
En las expresiones relacionales E1 <operador> E2, los operandos deben cumplir alguna de las condiciones siguientes:
- E1 y E2 son tipos aritméticos.
- E1 y E2 son punteros a versiones cualificadas o no cualificadas de tipos compatibles.
- Uno de ellos es un puntero a un objeto, mientras que el otro es un puntero a una versión cualificada o no cualificada de void.
- Uno de los dos es un puntero, mientras que el otro es un puntero nulo constante.
Cuando se trata de tipos definidos por el usuario (que no cumplen las condiciones anteriores) estos operadores pueden ser sobrecargados de forma que puedan ser utilizados con dichos tipos.
Precauciónes
Con el operador de igualdad
Las expresiones relacionales de igualdad son frecuentísimas en la programación. En multitud de ocasiones se comparan dos expresiones y se toma una decisión en función del resultado cierto / falso obtenido. Por ejemplo, la condición de la sentencia de iteración while puede ser una expresión relacional de igualdad:
int x = 1; y = 2;
...
while (x == y ) {
cout << "Son iguales..." << endl;
...
}
...
while (x == y ) {
cout << "Son iguales..." << endl;
...
}
Es muy frecuente que, tanto el principiante, como el programador acostumbrado a otros lenguajes, donde el operador de asignación y el de igualdad son distintos a los utilizados en C++ (por ejemplo := y =), confundan el operador de igualdad == con el de asignación =. Es este caso, el código anterior sería escrito erróneamente:
while (x = y ) {
cout << "Son iguales..." << endl;
...
}
cout << "Son iguales..." << endl;
...
}
El resultado es que el bucle se ejecuta mientras sea y != 0, ya que la expresión asigna y a x, y el resultado es cierto mientras que x sea distinto de cero.
REFLEXION:
"Los operadores relacionales son tambien conocidos con el nombre de operadores logicos ayudan al servidor a tener una mejor habilidad para manejar dichos operandos, tienen la veracidad de encontrar una respuesta logica" .
Brisa Jamzin Ramos Hernandez

No hay comentarios:
Publicar un comentario