Test Foro de elhacker.net SMF 2.1

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.

!((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

(!(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"

!(p || q)
p q
V V - F
V F - F
F V - F
F F - V



!(p && q)
p q
V V - F
V F - V
F V - V
F F - V




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

!(!p || !q)
p q
V V - V
V F - F
F V - F
F F - F


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

!(!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