Compartilhar via


Operador AND lógico: &&

Sintaxe

logical-and-expression:
equality-expression
logical-and-expression && equality-expression

Comentários

O operador AND lógico (&&) retorna true se os dois operandos forem true, caso contrário, retorna false. Os operandos são convertidos implicitamente no tipo bool antes da avaliação e o resultado é do tipo bool. O AND lógico tem associatividade da esquerda para a direita.

Os operandos do operador AND lógico não precisam ser do mesmo tipo, mas devem ser de tipo booleano, integral ou ponteiro. Os operandos são geralmente expressões relacionais ou de igualdade.

O primeiro operando é completamente avaliado e todos os efeitos colaterais são concluídos antes que a avaliação da expressão AND lógica continue.

O segundo operando é avaliado somente se o primeiro operando for avaliado como true (não zero). Essa avaliação elimina a avaliação desnecessária do segundo operando quando a expressão AND lógica for false. Você pode usar a avaliação de curto-circuito para evitar a remoção de referência do ponteiro nulo, conforme mostrado no seguinte exemplo:

char *pch = 0;
// ...
(pch) && (*pch = 'a');

Se pch for nulo (0), o lado direito da expressão nunca será avaliado. Essa avaliação de curto-circuito torna impossível a atribuição por meio de um ponteiro nulo.

Palavra-chave do operador para &&

O C++ especifica and como uma ortografia alternativa para &&. Em C, a ortografia alternativa é fornecida como uma macro no cabeçalho <iso646.h>. No C++, a ortografia alternativa é uma palavra-chave; o uso de <iso646.h> ou do equivalente do C++ <ciso646> foi preterido. No Microsoft C++, a opção do compilador /permissive- ou /Za é necessária para habilitar a ortografia alternativa.

Exemplo

// expre_Logical_AND_Operator.cpp
// compile with: /EHsc
// Demonstrate logical AND
#include <iostream>

using namespace std;

int main() {
   int a = 5, b = 10, c = 15;
   cout  << boolalpha
         << "The true expression "
         << "a < b && b < c yields "
         << (a < b && b < c) << endl
         << "The false expression "
         << "a > b && b < c yields "
         << (a > b && b < c) << endl;
}

Confira também

Operadores internos, precedência e associatividade no C++
Operadores lógicos C