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 & 1 e imprimir Par ou Impar.
  • 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

  1. Lemos um inteiro n com scanf.
  2. Usamos n & 1 para testar o bit menos significativo: se for 1, o número é ímpar; se 0, par.
  3. A estrutura if imprime a mensagem correspondente.
  4. Calculamos a expressão lógica com parênteses explícitos para refletir a precedência.
  5. Dentro dos parênteses, 3 * 4 é avaliado primeiro, depois 2 + 12, depois > 10.
  6. Em paralelo, 5 != 3 é avaliado como verdadeiro (1).
  7. O && combina os dois resultados: 1 && 1 = 1.
  8. O || 0 manté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 || 0 sem parênteses ainda é avaliado corretamente, mas a legibilidade piora.
  • Confundir & com &&: n & 1 é bit a bit; n && 1 é lógico e sempre verdadeiro para n != 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