Hola. Sé que esta duda corresponde más bien al foro de C, pero la he copiado aquí por si acaso la ve más gente.
Acabo de ver en un libro de programación algo que creo que es incorrecto. A ver si algún experto en C puede confirmármelo.
Dado el siguiente código:
if(a!=0 && 10/a<1){
...
}
Según mis conocimientos, la evaluación de una condición termina en cuanto alguna parte de la misma la hace FALSE, o bien cuando termina del todo. En el ejemplo anterior, si a==0 no hay peligro de que el código llegue a realizar una división por 0 ("10/a") ya que "a!=0" obliga a que la condición entera sea FALSE y no hace falta seguir evaluandola.
Sin embargo, en un libro he visto algo parecido a esto:
if(a==0 || 10/a>=1){
...
}
En este caso, si simplemente a==0 la condición completa es TRUE. La pregunta es: ¿Se sigue evaluando la condición si alguna parte de la misma la hace TRUE? En caso afirmativo obtendríamos error por división por cero.
¿Qué opináis?
Muchas gracias.