Test Foro de elhacker.net SMF 2.1

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

int main()
{
int x;
if (!(!(2<x) || (x>7)))
{
    printf ("Excelente");
}

}


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)