Ejercicio 5

Re: Ejercicio 5

de Eduardo Fernandez -
Número de respuestas: 0

Hola,

Lo que ocurre no es un "error", dice que es un warning, o sea un mensaje de "atención".

Lo que expresa es que se aplica la lógica de short circuit o evaluación perezosa. Consultas parecidas a estas se respondieron en el práctico anterior. Short circuit está explicado en el teórico. 

En este caso con x=2, los if de las líneas 4 y 8 son falsos en la primera expresión lógica.

x>=5 es falso (línea 4)

x>=3 es falso (línea 8)

Entonces, con el warning avisa que no evaluará el segundo término de los &, porque ya sabe que el resultado final del & va a ser falso (por definición del &, falso & falso == falso & verdadero == falso).

En las líneas 2 y 6 ocurre que el primer término del & es verdadero, entonces está obligado evaluar el segundo término para resolver el &. (porque verdadero & falso == falso, pero verdadero & verdadero == verdadero). No puede sacar provecho de la evaluación perezosa. 

Si no querés que aparezca más este warning, te sugiero que utilices && y ||.

Otra posibilidad es que escribas:

warning('off', 'Octave:possible-matlab-short-circuit-operator');

y no te va a avisar más sobre ese warning. 

Espero que haya quedado claro,

Eduardo