Desafio C
Verificando paridade e precedência
Enunciado
Leia um número inteiro e determine se ele é par usando apenas operadores bit a bit (sem %). Em seguida, calcule e exiba o resultado da expressão 2 + 3 * 4 > 10 && 5 != 3 || 0, mostrando o valor final. Use parênteses para deixar a precedência explícita e explique a ordem de avaliação nos comentários.
Requisitos
- Ler um inteiro.
- Verificar paridade com
n & 1e imprimirParouImpar. - Calcular a expressão lógica e imprimir o resultado (0 ou 1).
- Usar parênteses para agrupar a expressão conforme a precedência correta.
Código inicial
#include <stdio.h>
int main(void) {
int n;
// Seu código aqui
return 0;
}
Saída esperada
Digite um numero: 7
O numero 7 e Impar
Resultado da expressao: 1
Ver dica
Para paridade, o bit menos significativo indica se o número é ímpar. Na expressão, lembre-se: * antes de +, > antes de &&, && antes de ||.
Mostrar solução
#include <stdio.h>
int main(void) {
int n;
printf("Digite um numero: ");
scanf("%d", &n);
// Paridade usando bit a bit: se o bit 0 for 1, é ímpar
if (n & 1) {
printf("O numero %d e Impar\n", n);
} else {
printf("O numero %d e Par\n", n);
}
// Expressao: 2 + 3 * 4 > 10 && 5 != 3 || 0
// Precedencia: * antes de +, > antes de &&, && antes de ||
// Passo a passo:
// 3 * 4 = 12
// 2 + 12 = 14
// 14 > 10 = 1 (verdadeiro)
// 5 != 3 = 1 (verdadeiro)
// 1 && 1 = 1
// 1 || 0 = 1
int resultado = (2 + (3 * 4) > 10) && (5 != 3) || 0;
printf("Resultado da expressao: %d\n", resultado);
return 0;
}
Passo a passo
- Lemos um inteiro
ncomscanf. - Usamos
n & 1para testar o bit menos significativo: se for 1, o número é ímpar; se 0, par. - A estrutura
ifimprime a mensagem correspondente. - Calculamos a expressão lógica com parênteses explícitos para refletir a precedência.
- Dentro dos parênteses,
3 * 4é avaliado primeiro, depois2 + 12, depois> 10. - Em paralelo,
5 != 3é avaliado como verdadeiro (1). - O
&&combina os dois resultados:1 && 1 = 1. - O
|| 0mantém o resultado final como 1.
Por que funciona
O operador & com 1 isola o bit menos significativo, que determina a paridade em representação binária. A expressão lógica segue a precedência da linguagem C: multiplicação antes de soma, comparação antes de &&, e && antes de ||. Os parênteses deixam essa ordem explícita e evitam ambiguidades.
Erros comuns
- Usar
%para paridade: funciona, mas o enunciado pede bit a bit. - Esquecer parênteses e obter resultado diferente:
2 + 3 * 4 > 10 && 5 != 3 || 0sem parênteses ainda é avaliado corretamente, mas a legibilidade piora. - Confundir
&com&&:n & 1é bit a bit;n && 1é lógico e sempre verdadeiro paran != 0.
Outra forma de resolver
Poderia usar (n % 2 != 0) para paridade, mas não cumpre o requisito de usar bit a bit. Para a expressão, poderia simplificar para 1, mas o objetivo é demonstrar a avaliação.
Saída esperada
Digite um numero: 7
O numero 7 e Impar
Resultado da expressao: 1