A ver, hiddenotebook. Fíjate en la corrección de arisma respecto a &&. Es &&, no & (igual que == y =).
Volviendo al eterno tema del 23 (o cualquier impar > 10). Te voy a dejar la regla de De Morgan, que creo que aclará el asunto. La enuncio y luego vemos cómo la aplicamos a este caso concreto:
adicionalmennte (aunque en este caso no nos interesa):
¿Por qué? Veamos todas las posibilidades:
Código: Seleccionar todo
a = F; b = F
!(F && F) = !F = V = !F || !F = V || V
a = F; b = V
!(F && V) = !F = V = !F || !V = V || F
a = V; b = F
!(V && F) = !F = V = !V || !F = F || V
a = V; b = V
!(V && V) = !V = F = !V || !V = F || F
siendo evidentemente V = verdad y F = falso.
En el caso concreto de nuestro código:
Esto NO es, según pareces pensar hiddenotebook, igual a
sino
Código: Seleccionar todo
!(numero % 2 == 0) || !(numero > 10) -> (numero % 2 != 0) || (numero <= 10)
Es decir, la condición se cumple cuando numero es impar
O numero es menor o igual a 10. Por tanto, con el 23 se cumple la condición, ya que cumple que es impar, y finalmente se imprime el texto.
Algunas veces estas sentencias lógicas pueden resultar un poco mareo y dolor de cabeza, pero mi consejo es pensarlo bien, sobre todo ponerse ejemplos, ir sustituyendo en la condición y calcular tranquilamente el resultado. Eso nos ayudará a entenderlas mejor
