Operador AND lógico: &&
expression && expression
Comentários
O operador AND lógico (&&) retorna o valor booliano true se os dois ambos operandos forem true e retorna false de outra forma. 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 para o operador AND lógico não precisam ser do mesmo tipo, mas devem ser de tipo 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 de continuar a avaliação da expressão AND lógica.
O segundo operando é avaliado somente se o primeiro operando for avaliado como true (diferente de 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. Portanto, a atribuição por meio de um ponteiro nulo é impossível.
Palavra-chave do operador para &&
O operador and é o equivalente de texto de &&. Há duas maneiras de acessar o operador and nos programas: incluir o arquivo de cabeçalho iso646.h ou compilar com a opção do compilador /Za (Desabilitar extensões de linguagem).
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;
}