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