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++