Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   "And" con parentesis o sin parentesis es distinto?? (https://www.clubdelphi.com/foros/showthread.php?t=53660)

Antigol 26-02-2008 17:34:30

"And" con parentesis o sin parentesis es distinto??
 
Usando delphi 7.

MIren por favor esta imagen:

http://img248.imageshack.us/img248/2391/bugpp2.jpg

Fijense el valor de la variable "soymascercanoalapelota" , está en false (el if pide por ella en true) y sin embargo el programa y el mismo debug se meten dentro del if como si la condición se cumpliera.

Si les pongo un parentesis a cada una de las tres condiciones funciona pero sin los parentesis pasa eso. ¿Asi es el delphi? ¿o es un bug conocido?

maeyanes 26-02-2008 17:54:10

Hola...

Para preguntar sobre el valor de una variable Boolean, no es necesario como lo tienes en tu código. Bien puedes hacerlo así:

Código Delphi [-]
if not Quieto and SoyMasCercanoALaPelota and not DiLaPelota then
begin
  // ...
end


Saludos...

Héctor Randolph 26-02-2008 18:18:22

No es ningún BUG, solamente hay que tener en cuenta la precedencia de operadores.

Si el operador "AND" tiene mayor jerarquía que el operador "=", entonces la expresión será evaluada de esta manera:

Código Delphi [-]
if  Quieto = (false and SoyMasCercanoALPelota)  = (true and DiLaPelota) = false then
begin
  .
  .
end

Obviamente no te dará el resultado que esperas. Por esta razón, lo mejor es que tu mismo coloques los paréntesis para indicar el orden de evaluación.

Código Delphi [-]
if (Quieto = false) and (SoyMasCercanoALPelota = true) and (DiLaPelota = false) then
begin
  .
  .
end

Saludos

Antigol 26-02-2008 18:38:07

Si maeyanes, lo se, pero queria ver si asi funcionaba mi "problema".

Gracias Hector ahora entiendo como es.

Saludos!


La franja horaria es GMT +2. Ahora son las 09:07:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi