Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 13 Diciembre 2016, 16:07 pm



Título: Como afecta el negado a este tipo de expresion en C?
Publicado por: palacio29 en 13 Diciembre 2016, 16:07 pm
Tengo la siguiente expresion a la que le aplico varios negados.

Código
  1. !((3>x) || (x>7))

No entiendo como afecta el negado a :

- Los signos && y ||  (Osea si le aplico un negado a una expresion que tenga

Código
  1. (!(letra>='A' && letra<='Z'))

No se si hay algunos casos donde el negado transforma el && a un || o viceversa.

Tampoco entiendo como afecta el negado a los signos de mayor y menor.
Si los cambia o les pone mayor o igual o menor o igual.

He leido sobre leyes de demorgan pero no entiendo aun sobre en como afecta.


Título: Re: Como afecta el negado a este tipo de expresion en C?
Publicado por: ivancea96 en 13 Diciembre 2016, 17:01 pm
Si hablas de C++, '!' transforma los true en false y los false en true, sin más.

Si hablas de cómo negar una expresión sin englobarla con '!', suele bastar con invertir los operadores de comparación y lógicos (&&, ||).
Así pues, "a < b && b == c" quedaría: "a >= b || b != c".

Tu ejemplo: "!(letra>='A' && letra<='Z')". Podemos quitar el '!', invirtiendo lo de dentro, y quedaría: "letra<'A' || letra>'Z'".


Título: Re: Como afecta el negado a este tipo de expresion en C?
Publicado por: engel lex en 13 Diciembre 2016, 17:15 pm
El negado no cambia los operadores

Por teoría de lógica con "o" y "no" se hace "y" y "xor"

Código:
!(p || q)
p q
V V - F
V F - F
F V - F
F F - V


Código:
!(p && q)
p q
V V - F
V F - V
F V - V
F F - V



Para convertir "no" y "o" en "y"

Código:
!(!p || !q)
p q
V V - V
V F - F
F V - F
F F - F

Para convertir "no" y "y" en "o"

Código:
!(!p && !q)
p q
V V - V
V F - V
F V - V
F F - F

No se si esto es a lo que te refieres, tu tema no es muy claro