Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 25 Julio 2016, 21:19 pm



Título: (Consulta) Operadores logicos en C - And - Or- Negado -etc.
Publicado por: palacio29 en 25 Julio 2016, 21:19 pm
Hola

Tengo una consulta sobre este tipo de operadores. Por ejemplo en el siguiente codigo

Código
  1. int main()
  2. {
  3. int x;
  4. if (!(!(2<x) || (x>7)))
  5. {
  6.    printf ("Excelente");
  7. }
  8.  
  9. }

Este codigo lo que hace es que si x es mayor  o igual a 3 y x es menor o igual a 7, que entre al if y que imprima la palabra "Excelente".
Lo que no entiendo es en que momento del codigo, el || se vuelve un && y en que momento del codigo los <> se vuelven >= o <=.
Que es lo que hace el negado exactamente este tipo de situaciones?




Título: Re: (Consulta) Operadores logicos en C - And - Or- Negado -etc.
Publicado por: class_OpenGL en 25 Julio 2016, 21:51 pm
El negado lo único que hace es que si una operación daba como resultado 'true', entonces pasa a ser 'false' y viceversa.

Si no entiendes por qué al convertir el and (&&) a or (||) se invierte lo que se invierte, entonces es que no conoces las leyes de De Morgan. Una de estas leyes dice que si tienes dos operandos en disyunción  (or) y la expresión está negada, puedes expresarla de la siguiente forma:

!(OperandoA o Operando B) <=> !OperandoA and !OperandoB

Si no se ha entendido muy bien, aquí dejo un link de la wikipedia donde se explica:
https://es.wikipedia.org/wiki/Leyes_de_De_Morgan (https://es.wikipedia.org/wiki/Leyes_de_De_Morgan)