expressões de avaliação por parenteses conforme o critério de prioridade.
Você pode ajustar o o compilador pra fazer a avaliação baseada na primeira
condiçional "Complete boolean eval", esta condicional faz seu sistema ficar
um pouco mais lento pois ele irá avaliar a expressão toda. Se ela for
desabilitada, uma expressão "And" ele avaliaria apenas pela primeira
condicional. Se ela for falsa, já rejeita (visto que o "E" requer todas
verdadeiras) da mesma forma com o "or", se a primeira for verdadeira, já
passa (visto que o "OU" rejeita no caso de todas falsas)
Os parenteses determinam a prioridade da avaliação dos valores. Veja a
seguinte situação:
A + B + C
e
A + (B + C)
No primeiro caso, ele irá somar tudo sequencialmente e no segundo caso, ele
irá somar primeiramente B + C e o resultado somar a A.
Veja outro caso:
A + B * C
e
(A + B) * C
No primeiro caso, a prioridade é sempre da multiplicação, então ele irá
multiplicar B por C pra depois somar com A, mas no segundo caso você muda a
ordem das prioridades e ele irá somar A + B primeiro pra depois multiplicar
por C.
A mesma coisa se aplica pra expressões lógicas. O parentese determina a
ordem de prioridades.
Eu, opinião pessoal minha, trabalharia com:
if (not Prepared) or (not SQLIsValid)
Muito mais robusto e com menos chances de gerar bugs.
[]s
Walter Alves Chagas Junior
Projeto e desenvolvimento de sistemas
Telemont Engenharia de telecomunicações S/A
Belo Horizonte - MG - Brasil
[EMAIL PROTECTED]
Fone: (31) 3389-8215 Fax: (31) 3389-8200
-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
nome de Andrei Luís
Enviada em: sexta-feira, 12 de maio de 2006 08:30
Para: Delphi-br
Assunto: [delphi-br] Como o compilador interpreta essa linha?
Bom dia a todos,
Surgiu uma dúvida na lista do IBO e gostaria de postá-la aqui para ver a
opinião dos colegas, seria interessante também se o Andreano ou o Daniel
Polistchuck pudessem dar sua contribuição para o assunto.
A questão é a seguinte:
Como o compilador interpreta a seguinte linha:
if not Prepared or not SQLIsValid then
Assim:
if not (Prepared or not SQLIsValid) then
Ou assim?
if (not Prepared) or (not SQLIsValid) then
O comportamento que se deseja é o último, mas o código está de fato sem
nenhum parenteses, e o comportamento tem sido estranho. Poderia essa linha
ser interpretada de uma forma ou de outra de acordo com a versão do Delphi?
Existe alguma diretiva de compilação que possa afetar a forma de
interpretação dessa linha?
--
[]s
Andrei
[As partes desta mensagem que não continham texto foram removidas]
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Links do Yahoo! Grupos
[As partes desta mensagem que não continham texto foram removidas]
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
<*> Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
<*> Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED]
Yahoo! Grupos, um serviço oferecido por: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.