Da trilha de C Este conceito ainda não saiu como card do dia. ir para o card de hoje

C Fundamentos Básico

Operadores

Em C, os operadores são símbolos que realizam operações sobre valores e variáveis. Eles são a base para qualquer cálculo ou tomada de decisão no programa. Neste card, vamos revisar os principais tipos: aritméticos, relacionais, lógicos, incremento/decremento, bit a bit e atribuição, além de entender a precedência entre eles.

Os operadores aritméticos (+, -, *, /, %) trabalham com números. Os relacionais (==, !=, <, >, <=, >=) comparam valores e retornam 1 (verdadeiro) ou 0 (falso). Os lógicos (&&, ||, !) combinam condições booleanas. Já os operadores de incremento (++) e decremento (--) somam ou subtraem 1 de uma variável, com formas prefixada e pós-fixada que diferem no momento da avaliação.

Os operadores bit a bit (&, |, ^, ~, <<, >>) manipulam os bits individuais de inteiros. Eles são muito usados em programação de baixo nível, otimizações e manipulação de flags. Por fim, a precedência define a ordem de avaliação: por exemplo, * tem precedência maior que +, e parênteses podem forçar uma ordem específica. Entender isso evita erros sutis.

Pontos-chave

  • Operadores aritméticos seguem a precedência matemática: *, /, % antes de +, -.
  • ++ e -- podem ser prefixados (++x) ou pós-fixados (x++), alterando o valor da expressão.
  • Operadores bit a bit operam diretamente sobre a representação binária dos inteiros.
  • && e || usam curto-circuito: o segundo operando pode não ser avaliado.
  • Use parênteses para deixar a precedência explícita e evitar bugs.
operadores.c
#include <stdio.h>

int main(void) {
    // Aritméticos
    int a = 10, b = 3;
    printf("Soma: %d\n", a + b);
    printf("Divisao inteira: %d\n", a / b);
    printf("Resto: %d\n", a % b);

    // Incremento
    int x = 5;
    printf("Pos-incremento: %d\n", x++); // imprime 5, depois x vira 6
    printf("Pre-incremento: %d\n", ++x); // x vira 7, imprime 7

    // Bit a bit
    unsigned int p = 0b1100; // 12
    unsigned int q = 0b1010; // 10
    printf("AND bit a bit: %u\n", p & q); // 1000 = 8
    printf("OR bit a bit: %u\n", p | q);  // 1110 = 14
    printf("XOR bit a bit: %u\n", p ^ q); // 0110 = 6
    printf("Deslocamento a esquerda: %u\n", p << 1); // 11000 = 24

    // Lógicos e precedência
    int r = 5, s = 10;
    int resultado = (r > 0 && s < 20) || (r == s);
    printf("Resultado logico: %d\n", resultado); // 1 (verdadeiro)

    // Precedência: * antes de +
    int calc = 2 + 3 * 4;
    printf("2 + 3 * 4 = %d\n", calc); // 14

    return 0;
}

Exercícios

  1. 1
    Fácil

    Calculando média e resto

    Escreva um programa que leia dois números inteiros e exiba a soma, a média inteira (divisão inteira) e o resto da divisão do primeiro pelo segundo.

    Resolver
  2. 2
    Médio

    Manipulando bits com operadores

    Leia um número inteiro sem sinal e exiba o resultado das operações bit a bit: AND com 0x0F, OR com 0xF0, XOR com 0xFF e deslocamento à esquerda em 2 bits. Use os operadores &, |, ^ e <<.

    Resolver
  3. 3
    Desafio

    Verificando paridade e precedência

    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.

    Resolver

Continue estudando