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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de