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:
true- si al menos un operando o expresión es verdadero.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.
Artículo relacionado - C++ Operator
- Implemente la instrucción if con múltiples condiciones en C++
- Operador de flecha vs. Operador de puntos en C++
- Operador de negación unaria en C++
- Precedencia de operadores y asociatividad en C++
- Sobrecargue el operador de soporte en C++
- Sobrecargar operadores de inserción de flujo de entrada y salida en C++
