
Los operadores and, or y not
Capítulo 12: Los operadores de lógicos de C#
Los operadores lógicos de C# nos dan la posibilidad de combinar más de una expresión booleana a la vez. Estos operadores son: &&
(y lógico), ||
(o lógico) y !
(negación lógica).
Estas expresiones, son como las del capítulo anterior, solo que aquí, con estos operadores, podremos combinar dos expresiones a la vez. No solo eso, se pueden ir encadenando más pares de dos expresiones utilizando de nuevo los mismos operadores o combinándolos. Ahora verás que es más simple de lo que parece.
El operador lógico and de C#
El operador &&
(and) evalúa dos expresiones booleanas y devuelve true
solo si ambas expresiones son true
, de lo contrario, devuelve false
. Te dejo una table de verdad para que veas los posibles resultados:
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Este sería un ejemplo:
int numero1 = 10;
int numero2 = 20;
bool expresion1 = numero1 < numero2;
bool expresion2 = numero1 != numero2;
bool resultado = expresion1 && expresion2;
Console.WriteLine(resultado);
Ambas expresiones son True
, por lo tanto, en la variable resultado se guarda un valor de True
.
True
En cambio, en este nuevo ejemplo, en la segunda expresión, no se está cumpliendo la expresión. Por lo tanto, una True
y otra False
, da False
en conjunto.
int numero1 = 10;
int numero2 = 20;
bool expresion1 = numero1 < numero2;
bool expresion2 = numero1 == numero2;
bool resultado = expresion1 && expresion2;
Console.WriteLine(resultado);
False
El operador lógico or de C#
El operador lógico 'or' ||
de C#, es más flexible que el 'and', ya que solo requiere de que una de las dos expresiones se cumplan para dar True
. Solo dará False
en caso de que no se cumpla ninguna de las dos expresiones. Aquí tienes la tabla de verdad que representa las posibilidades:
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
En el siguiente ejemplo, no se cumple la segunda expresión. Sin embargo, el resultado final es True
, ya que se cumple la primera expresión.
int numero1 = 10;
int numero2 = 20;
bool expresion1 = numero1 < numero2;
bool expresion2 = numero1 == numero2;
bool resultado = expresion1 || expresion2;
Console.WriteLine(resultado);
True
En cambio, en este ejemplo, no se cumple ninguna de las dos expresiones:
int numero1 = 10;
int numero2 = 20;
bool expresion1 = numero1 > numero2;
bool expresion2 = numero1 == numero2;
bool resultado = expresion1 || expresion2;
Console.WriteLine(resultado);
False
El operador lógico not de C#
El operador lógico 'not' !
es más sencillo. Se utiliza para expresar todo lo contrario de una expresión.
int numero1 = 10;
int numero2 = 20;
bool expresion = !(numero1 == numero2);
Console.WriteLine(expresion);
True
En esta expresión que englobo entre paréntesis, el resultado sería False
, puesto que numero1
, no es igual que numero2
. Sin embargo, lo que esto expresando con el operador de negación lógica, es que evalúe si esos dos valores no son iguales.
Si ponemos los dos valores iguales, dará False
:
int numero1 = 10;
int numero2 = 10;
bool expresion = !(numero1 == numero2);
Console.WriteLine(expresion);
False
Da este resultado porque le estamos diciendo si no son iguales, dado que lo son, da False
.
Combinando varios operadores lógicos
El uso de estas condiciones no está limitado a dos expresiones. Puedes encadenar y combinar tantos operadores lógicos como necesites. No obstante, mi recomendación es que no abuses de ellos para hacer expresiones demasiado complicadas y laberínticas, ya que empeorará la claridad del código. Siempre hay formas diferentes de llegar a los mismos caminos.
int numero1 = 10;
int numero2 = 20;
bool expresion = (numero1 > 5 && numero2 < 30)
|| !(numero1 == numero2);
Console.WriteLine(expresion);
True
Simplifico el código y te explico. (True && True) || !(False)
= (True) || (True)
= True
.
Primero, se evalúa (numero1 > 5 && numero2 < 30)
. Esta expresión conjunta devuelve True
, ya que numero1
es mayor que 5 y numero2
es menor que 30. Pues bien, aquí nos queda un True
.
La otra parte de la expresión es !(numero1 == numero2)
. Puesto que no son iguales, da False y por lo tanto, con la negación lógica, se invierte.
Finalmente, nos queda esto: (True) || (True)
. Verdadero o verdadero es True
con un 'or'.
Estas expresiones todavía no tienen utilidad con lo que llevas de curso, pero muy pronto, verás como usarlas para hacer todo tipo de cosas.
Comentarios
Si te quedan dudas sobre el temario, sobre C#, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.