PREGUNTA: Si a = true y b = false, la expresión:
!(!(a || b) && !(a))
Toma el mismo resultado que:
a) a && b
b) !(a || !b)
c) b ll (a&&b)
d) !(!a || b) || !b
RESPUESTA: la respuesta correcta es la d). Pregunta con bastante mala idea ya que es bastante liosa mezclando símbolos. Es probable que terminemos con un dolor de cabeza después de haber estado un rato dándole vueltas. Hay que tener en cuenta que el orden de precedencia de los operadores es:
1º) Operadores unarios como ! y -
2º) Operadores multiplicativos *, /, %
3º) Operadores aditivos: +, -
4º) Comparación matemática: >, >=, <, <=
5º) Comparación de igualdad: ==, !=
6º) Conjunción &&
7º) Disyunción ||
Y también que dentro de un mismo nivel, la ejecución es de izquierda a derecha.
Si a= true y b=false y evaluamos la expresión inicial tenemos:
! ( !( true || false) &&
!(true))
!(true) devuelve false
x && false devuelve false, luego la expresión interior
!(a || b) && !(a) devuelve false. Al tener toda la expresión negada, el resultado final es true.
La opción a) plantea true && false, que devuelve false, con lo cual no puede ser solución.
La opción b) plantea !(true || !false), lo interior devuelve true y el resultado global es false con lo cual no puede ser solución.
La opción c) plantea false || ... que devolverá false.
Conclusión: la opción correcta es la d), que nos permite obtener true (aparte del dolor de cabeza)