Imagina esta función:
bool funcion(<parametros>){
if(condicion1)
if(condicion2)
return true;
else
return false;
}
Situaciones posibles:
- <condicion1 == true> && <condicion2 == true> -> <return true>
- <condicion1 == true> && <condicion2 == false> -> <return false>
- <condicion1 == false> && <condicion2 == true || condicion2 == false>-> no se ha especificado qué debe devolver la función.
Entonces lo que he podido deducir haciendo pruebas es que cuando ocurre una situación en la que no se ha especificado el valor de retorno, la función devuelve <true> automáticamente.
Este problema al tener 2 condicionales, tiene 2^2=4 posibles situaciones. En 2 de las situaciones tú controlas el valor que se devuelve pero en las otras 2, no. Y en esas 2 que no controlas, se devuelve siempre <true>.
El código que has mandado tú al tener 4 condicionales, tiene 2^4=16 situaciones posibles. En 2 de las situaciones controlas lo que se devuelve, en las otras 14, no. Si ocurre cualquiera de esas 14 situaciones que no has especificado, la función devolverá <true>.
Situaciones que controlas tú:
- En ambas funciones, si se cumplen todas las condiciones, devuelve <true>.
- En la primera función, si no se cumple la primera condición, devuelve <false>.
- En la segunda función, si se cumplen todas las condiciones menos la última, devuelve <false>.
Situaciones que no controlas:
- En la primera función, si se cumple la primera condición pero la segunda no se cumple (por ejemplo). En este caso va a devolver <true>.
No sé si ahora me he explicado mejor o no. Si sigues sin entenderme pregunta lo que no entiendes exactamente a ver si puedo explicar mejor esa parte.