El operador or en C++

Suraj P 12 octubre 2023
  1. el operador lógico OR en C++
  2. el operador bit a bit OR en C++
  3. Conclusión
El operador or en C++

Este artículo explica los operadores OR en C++ y sus casos de uso. Como cualquier otro lenguaje de programación, C++ tiene un OR lógico y un OR bit a bit; veámoslos uno por uno.

el operador lógico OR en C++

Usamos un operador lógico para comparar dos o más operandos/expresiones y devolver valores true o false. Estos son útiles en escenarios de toma de decisiones.

El OR lógico se representa mediante ||.

Sintaxis:

expression1 || expression2

El operador lógico OR || devoluciones:

  1. true - si al menos un operando o expresión es verdadero.
  2. false - si y solo si todos los operandos son falsos.

La tabla de verdad del O lógico ||.

A y B son operandos.

A B A||B
F F F
F T T
T F T
T T T

Podemos ver sólo cuando ambos operandos son false; obtenemos la salida como false. En C o C++, false es cero y true es cualquier valor distinto de cero; generalmente, se representa usando el entero 1.

Ejemplo:

Veamos cómo se usa el O lógico en la toma de decisiones. Considere una situación en la que un usuario ingresa un carácter en minúscula y quiere saber si es una vocal o una consonante.

#include <iostream>
using namespace std;

int main() {
  char ch;
  cin >> ch;

  if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
    cout << "It's is a VOWEL.";
  } else
    cout << "It's a consonant";
}

Si la entrada es z, todas las condiciones OR dentro de la sentencia if son false, se evalúa como false, y la condición if falla. Entonces se ejecuta el bloque else.

Producción :

z
It's a consonant

Una propiedad interesante para recordar sobre el O lógico es que si la parte del lado izquierdo es true, la parte del lado derecho no se evalúa porque toda la expresión es verdadera ahora de todos modos.

Significado en expresión1 || expresión2 si expresión1 es true, expresión2 no se evalúa.

Código de ejemplo:

#include <iostream>
using namespace std;

int main() {
  int a = 10;
  int b = (a = a > 5 ? 25 : 0) || 0;

  cout << "Value of a " << a << endl;
  cout << "Value of b " << b << endl;

  // part two
  int x = 9;
  int c = (x = 0) || (x = 6789);

  cout << "Value of x " << x << endl;
  cout << "Value of c " << c << endl;
}

Producción :

Value of a 25
Value of b 1
Value of x 6789
Value of c 1

Explicación: (a=a>5?25:0) se evalúa como true porque a es mayor que 5 y se asigna 25 a a, y en C++ distinto de 0(false), todos los valores se consideran true.

Dado que la parte del lado izquierdo del O lógico es true, el lado derecho no se evalúa; el valor de la expresión global es true, es decir, 1 y se asigna a b.

Ahora la segunda parte del programa c = (x=0) || (x=6789), LHS x=0 significa que es false, por lo que RHS se evalúa x=6789 ya que cualquier valor distinto de cero es true, toda la expresión se convierte en verdadera ahora, y 1 se asigna a c.

el operador bit a bit OR en C++

Una sola línea vertical | representa el operador OR a nivel de bits. La principal diferencia entre los operadores lógicos y los de bit a bit es que el resultado de los operadores lógicos (&&, || y !) es 0(false) o 1(true), pero el resultado de un operador de bit a bit es un valor entero.

El | (bit a bit OR) en C o C++ toma dos números como operandos y hace OR en cada bit de dos números y devuelve el resultado.

Código de ejemplo:

#include <iostream>
using namespace std;

int main() {
  int a = 2;
  int b = 4;

  int c = a || b;  // logical OR

  int d = a | b;  // bitwise OR

  cout << "Value of c " << c << endl;
  cout << "value of d " << d << endl;
}

Producción :

Value of c 1
value of d 6

Explicación: Para a||b, a=2, que es un valor distinto de cero, se evalúa como true, por lo que el valor de c se convierte en true.

Para a|b, primero tenemos que convertir a y b en formato binario y luego aplicar OR en cada bit, a = 010 y b = 100 en binario, y si aplicamos O en cada bit, obtenemos una salida de 6, que se asigna a la variable d.

 0 1 0   this is a=2
 1 0 0    this is b=4
-------
 1 1 0  //this is 6 in decimal
-------

Conclusión

Aprendimos sobre los operadores lógicos y bit a bit OR en este artículo.

Entendimos que el OR lógico se usa para la toma de decisiones, y cualquier operando/expresión distinto de cero se considera 1(true), mientras que en OR bit a bit, la operación se aplica a cada bit, y un valor entero es devuelto como salida.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Artículo relacionado - C++ Operator