Avaliação de curto-circuito
Avaliação de curto-circuito, avaliação mínima ou avaliação de McCarthy especifica a semântica de alguns operadores booleanos em algumas linguagens de programação na qual o segundo argumento é apenas executado ou avaliado se o primeiro argumento não for suficiente para determinar o valor da expressão: quando o primeiro argumento de uma função AND
é avaliado como falso
, o valor global deve ser falso
e quando o primeiro argumento da função OR
for avaliado como verdadeiro
, o valor global deve ser verdadeiro
. Em algumas linguagens de programação (Lisp), os operadores booleanos usuais são de curto-circuito. Em outras (Java, Ada), os operadores booleanos padrões e de curto-circuito estão disponíveis.
O operador de curto-circuito x Sand y
é equivalente à expressão condicional if x then y else false
. x Sor y
é equivalente à if x then true else y
.
Suporte em linguagens de programação comuns
Linguagem | Operadores | Operadores de curto-circuito | Tipo do resultado |
---|---|---|---|
Ada, Eiffel | and , or | and then , or else | Booleano |
ALGOL 68 | and , & , ∧ ; or , ∨ | andf , orf (ambos definidos pelo usuário) | Booleano |
C1 | & , | | && , || | Numérico |
C++, Objective Caml, Haskell | none | && , || | Booleano |
C#, Java, MATLAB,[1] R | & , | | && , || | Booleano |
ColdFusion | none | AND , OR , && , || | Booleano |
Erlang | and , or | andalso , orelse | Booleano |
Fortran | .and. , .or. | Booleano | |
JavaScript | none | && , || | Último valor |
Lisp, Lua, Scheme | none | and , or | Último valor |
Pascal | and , or 2 | and_then , or_else 3 | Booleano |
Perl, Ruby | & , | | && , and , || , or | Último valor |
PHP | none | && , and , || , or | Booleano |
Python | none | and , or | Último valor |
Smalltalk | & , | | and: , or: | Booleano |
Standard ML | Desconhecido | andalso , orelse | Booleano |
Visual Basic .NET | And , Or | AndAlso , OrElse | Booleano |
VB Script, VB Classic, VBA | And , Or | Select Case | Numérico |
1 C, antes C99, de fato não possuía um tipo booleano distinto.
2 ISO Pascal permite, mas não requer operações de curto-circuito.
3 ISO-10206 Extended Pascal suporta and_then
e or_else
.[2]
Referências
![]() | Este artigo é um esboço. Você pode ajudar a Wikipédia expandindo-o. | Editor: considere marcar com um esboço mais específico. |