• Sábado 27 de Abril de 2024, 09:34

Autor Tema:  Dudilla Acerca De La Evaluación De Una Condición.  (Leído 1156 veces)

NEXTOR

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Dudilla Acerca De La Evaluación De Una Condición.
« en: Sábado 8 de Mayo de 2004, 01:52 »
0
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:

Código: Text
  1.  
  2. if(a!=0 && 10/a<1){
  3.  
  4. ...
  5.  
  6. }
  7.  
  8.  

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:

Código: Text
  1.  
  2. if(a==0 || 10/a>=1){
  3.  
  4. ...
  5.  
  6. }
  7.  
  8.  

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.
Néxtor

darko

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Dudilla Acerca De La Evaluación De Una Condición.
« Respuesta #1 en: Sábado 8 de Mayo de 2004, 16:47 »
0
Veamos los dos if que hay puestos comprueban cosas distintas, el segundo codigo que has puesto lo que comprueba es que a sea mayor o igual que 0 y menor o igual que 10.
Claro que si durante el codigo, volvemos a hacer una division por a y a era cero dara error, pero se supone que no lo quieras hacer.
Creo que era eso lo que preguntabas....

NEXTOR

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Dudilla Acerca De La Evaluación De Una Condición.
« Respuesta #2 en: Lunes 17 de Mayo de 2004, 08:24 »
0
Hola Darko. Gracias por responder, pero ya resolví la duda en otra parte del foro.

Ya sé que ambas condiciones no evalúan lo mismo, pero mi duda era otra: No estaba seguro de que una condición OR dejara de ser evaluada cuando una de las partes es VERDADERA, lo cual hace verdadera la condición entera sin importar si la otra parte de la condición sea verdadera o no. La conclusión a la que llegamos es que no es así, por lo que en el segundo código de ejemplo que puse, si a==0 obtendríamos un error de división por cero.

Chao!
Néxtor