cpp-operadores-logicos

Operadores lógicos en C++

Los operadores lógicos son símbolos especiales que nos permiten combinar condiciones y realizar operaciones basadas en el resultado de esas condiciones.

Los operadores lógicos más comunes en C++ son:

OperadorNombreDescripción
&&ANDDevuelve true si ambos operandos son true
||ORDevuelve true si al menos uno de los operandos es true
!NOTNiega el valor

Listado de operadores lógicos

AND lógico (&&)

El operador lógico AND nos permite evaluar dos condiciones y devuelve true si ambas condiciones son verdaderas, o false en caso contrario. Por ejemplo:

bool condicion1 = true;
bool condicion2 = false;
bool resultado = condicion1 && condicion2; // resultado será igual a false

OR lógico (||)

El operador lógico OR nos permite evaluar dos condiciones y devuelve true si al menos una de las condiciones es verdadera, o false en caso contrario. Por ejemplo:

bool condicion1 = true;
bool condicion2 = false;
bool resultado = condicion1 || condicion2; // resultado será igual a true

NOT lógico (!)

El operador lógico NOT nos permite invertir el valor de una condición. Si la condición es true, devuelve false, y si la condición es false, devuelve true. Por ejemplo:

bool condicion = true;
bool resultado = !condicion; // resultado será igual a false

Ejemplos de uso

Combinación con &&

El operador && (AND lógico) se utiliza para combinar dos expresiones booleanas. La expresión completa se evalúa como true solo si ambas subexpresiones son true.

int edad = 25;
bool tieneLicencia = true;

bool puedeConducir = (edad >= 18) && tieneLicencia; // true

Combinación con ||

El operador || (OR lógico) se utiliza para combinar dos expresiones booleanas. La expresión completa se evalúa como true si al menos una de las subexpresiones es true.

bool estaLloviendo = false;
bool esFrio = true;

bool quiereQuedarseEnCasa = estaLloviendo || esFrio; // true

Negación con !

El operador ! (NOT lógico) se utiliza para negar una expresión booleana. La expresión completa se evalúa como true si la subexpresión es false, y viceversa.

bool esDia = true;
bool esNoche = !esDia; // false

Combinación de operadores lógicos

Es posible combinar varios operadores lógicos en una sola expresión para crear condiciones más complejas.

Por ejemplo:

int numero = 15;

bool esMultiploDe3 = (numero % 3 == 0);
bool esMultiploDe5 = (numero % 5 == 0);

bool esMultiploDe3_o_5 = esMultiploDe3 || esMultiploDe5; // true, ya que 15 es múltiplo de 3 o 5
bool esMultiploDe3_y_5 = esMultiploDe3 && esMultiploDe5; // true, ya que 15 es múltiplo de 3 y 5 simultáneamente
bool noEsMultiploDe3 = !esMultiploDe3; // false

Precedencia de operadores lógicos

Cuando se combinan múltiples operadores lógicos en una expresión, es importante entender su precedencia para evaluar correctamente la expresión.

La precedencia de operadores lógicos en C++ sigue este orden:

  • ! (NOT)
  • && (AND)
  • || (OR)

Por lo tanto, en una expresión con && y ||, && se evalúa antes que ||. Sin embargo, no conviene abusar de esto a la hora de escribir nuestro código.

Por ejemplo:

int a = 5;
int b = 10;
int c = 15;

bool resultado = (a > b) || (b < c) && (a == c); // true
// Evaluado como: (a > b) || ((b < c) && (a == c))

Para mejorar la claridad, se pueden usar paréntesis (no te importe hacerlo)

bool resultado = (a > b) || ((b < c) && (a == c)); // true