Ver Mensaje Individual
  #12  
Antiguo 21-07-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Reputación: 22
Mick Va por buen camino
Estas mezclando dos conceptos diferentes, que se evalue o no la segunda comparacion es un tema de optimizacion del compilador o interprete que sea, una optimizacion permite simplemente que el codigo se ejecute un poco mas rapido, pero esto no tiene nada que ver con el resultado, es decir
el resultado de una comparacion o consulta va a ser el mismo independientemente de que se evaluen los dos resultados o no.

Si hacemos "A o B", y al interpretar el resultado vemos que A es VERDADERO podriamos evaluar B o no, pero ya sabemos que el resultado final va a ser VERDADERO valga lo que valga B, de modo que muchos compiladores por tema de acelerar la ejecucion y no hacer comprobaciones superfluas, siemplemente ahi paran y ya no evaluan B porque no hace falta, ya sabemos que el resultado final es VERDADERO independientemente de lo que valga B.

La explicacion en ingles de "Short-Circuit Evaluation", no tiene que ver con que los resultados en tu caso vayan a ser diferentes, has interpretado mal esa explicacion.

Ese texto se limita a explicar un caso muy concreto que de rebote produce el hecho de no evaluar B, y es que si en B existe una operacion matematica que puede dar error (como una division por cero), en el caso de short-circuit evaluation si A ya es verdadero, la operacion B no daria error porque B no se evalua. No es que de resultados distintos es que se pararia el programa con un error o excepcion de division por cero en el caso de que se evaluase B.

Pero este es un caso "extremo" por asi decirlo que no tiene que ver con la logica del operador OR, en definitiva un OR es un OR y siempre dara el mismo resultado independientemente de que el compilador o el interprete lo procesen de una forma u otra.

Saludos
Responder Con Cita