aula 90

Diferença entre os operadores lógicos && e & (diferença entre um e dois ‘es’ comerciais)

Bem vindo a aula 90 de nosso curso gratuito de programação com a linguagem C.

Nesta aula vamos fazer uma pausa em nossa lista de exercícios para entender a diferença entre os operadores lógicos && e & (diferença entre um e dois ‘es’ comerciais).

Você deve ter percebido que na resolução do exercício da aula anterior eu utilizei apenas um & e nosso programa funcionou corretamente. Isso levanta a seguinte questão: qual a diferença entre & e &&? Me acompanhe na aula de hoje e não tenha mais essa dúvida.

Um e (&)

Quando usamos apenas um e comercial (&) o computador faz uma comparação bit a bit. Independente do resultado do primeiro teste, sempre serão feitos todos os testes. Veja o exemplo a seguir:

printf("Digite x e y: ");
scanf("%d%d", &x, &y);
if(x != 0 & y != 0)

Se o primeiro teste (x != 0) for falso nós já sabemos que o resultado final será falso. Contudo, como foi utilizado apenas um e comercial (&), o segundo teste (y != 0) também será feito.

Dois es (&&)

Quando usamos dois es comerciais (&&) o nosso programa se torna um pouco mais eficiente uma vez que a realização do segundo teste fica atrelada ao resultado do primeiro teste. Veja o exemplo a seguir:

printf("Digite x e y: ");
scanf("%d%d", &x, &y);
if(x != 0 && y != 0)

Se o primeiro teste (x != 0) for falso o segundo teste (y != 0) nem será feito uma vez que já sabemos que o resultado final será falso.

Quando há qualquer dúvida referente à sintaxe da linguagem é sempre bom consultar a documentação oficial:
The Standard C
Documento gratuito disponível

Deixe um comentário

sete + 8 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.